CentOS初步学习记录(五)用户和用户组管理

时间:2021-10-02 06:10:05

一、前言

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个惟一的用户名和各自的口令,以及每个用户的独有文件夹(/usr/用户名),Root用户的目录比较特殊(/ROOT),用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

二、用户管理

2.1 用户创建

1)基本语法

useradd 选项 用户名

2)选项

  • -c:加上备注文字,备注文字保存在 passwd 的备注栏中
  • -d:指定用户登入时的启始目录
  • -D:变更预设值
  • -e:指定账号的有效期限,缺省表示永久有效
  • -f:指定在密码过期后多少天即关闭该账号
  • -g:指定用户所属的起始群组
  • -G:指定用户所属的附加群组
  • -m:自动建立用户的登入目录
  • -M:不要自动建立用户的登入目录
  • -n:取消建立以用户名称为名的群组
  • -r:建立系统账号
  • -s:指定用户登入后所使用的 Shell
  • -u:指定用户 ID 号

3)实例

useradd –d /usr/txl -m txl

此命令创建了一个用户 txl,其中 -d 和 -m 选项用来为登录名 txl 产生一个主目录 /usr/txl(/usr为默认的用户主目录所在的父目录)。

2.2 用户删除

 1)基本语法

userdel 选项 用户名

2)选项

  • -r:把用户的主目录一起删除

3)实例

userdel -r txl

此命令删除用户txl在系统文件中(主要是 /etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

2.3 用户口令管理

用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。

指定和修改用户口令的 Shel 命令是 passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。

1)基本语法

passwd 选项 用户名

普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令

2)选项

  • -l 锁定口令,即禁用账号。
  • -u 口令解锁。
  • -d 使账号无口令。
  • -f 强迫用户下次登录时修改口令。

3)实例

例如,假设当前用户是 txl,则下面的命令修改该用户自己的口令:

$ passwd 
Old password:****** 
New password:******* 
Re-enter new password:*******

如果是超级用户,可以用下列形式指定任何用户的口令:

# passwd txl 
New password:******* 
Re-enter new password:*******

2.4 用户修改

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。

1)基本语法

usermod 选项 用户名

2)选项

  • -c<备注>:修改用户帐号的备注文字
  • -d登入目录>:修改用户登入时的目录
  • -e<有效期限>:修改帐号的有效期限
  • -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号
  • -g<群组>:修改用户所属的群组
  • -G<群组>:修改用户所属的附加群组
  • -l<帐号名称>:修改用户帐号名称
  • -L:锁定用户密码,使密码无效
  • -s<shell>:修改用户登入后所使用的shell
  • -u<uid>:修改用户ID
  • -U:解除密码锁定

常用的选项包括 -c, -d, -m, -g, -G, -s, -u 以及 -o 等,这些选项的意义与 useradd 命令中的选项一样,可以为用户指定新的资源值。

另外,有些系统可以使用选项:-l 新用户名,这个选项指定一个新的账号,即将原来的用户名改为新的用户名,如:

usermod -s /bin/ksh -d /home/z –g developer txl

此命令将用户 txl 的登录 Shell 修改为 ksh,主目录改为 /home/z,用户组改为 developer。

3)实例

usermod -s /sbin/nologin txl

此命令禁止用户 txl 进行 Shell 登录。

三、用户组管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

3.1 用户组创建

1)基本语法

groupadd 选项 用户组

2)选项

  • -g:GID 指定新用户组的组标识号(GID)
  • -o:一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同

3)实例

groupadd group1

此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。

3.2 用户组删除

1)基本语法

groupdel 用户组

2)实例

groupdel group1

此命令从系统中删除组 group1。

3.3 用户组修改

1)基本语法

groupmod 选项 用户组

2)选项

  • -g:GID 为用户组指定新的组标识号
  • -o:与 -g 选项同时使用,用户组的新 GID 可以与系统已有用户组的 GID 相同
  • -n <新用户组>:将用户组的名字改为新名字

3)实例

groupmod –g 10000 -n group3 group2

此命令将组 group2 的标识号改为 10000,组名修改为 group3。

四、文件 /etc/passwd

...

五、Shell Script 实例

有时候为了安全,我们的软件在运行时不推荐使用 ROOT 账户运行。所以我们会有个初始化 shell 脚本,来创建用户和初始化文件:

  1. 判断用户是否存在(譬如叫 txl),没有则创建
  2. 创建后设置密码为123
  3. 把一些程序文件拷贝过去,并且除了 root 外,只能 txl 用户运行(最好是 root 也不能方便的运行)

5.1 判断用户是否存在

1)通过 /etc/passwd 文件内容判断

grep "^xxx:" /etc/passwd

 5.2 设置用户密码

使用 passwd 修改密码需要提示和确认,需要强迫设置:

echo "123" | passwd txl --stdin
  • stdin:标准输入(键盘)
  • --stdin:使用非交互模式输入