46. 用户管理 - 创建、变更、删除

开篇词

为了便于对用户的管理,Linux 提供了一些常用的命令,以允许我们以更标准的方式对用户进行增、删、改的操作。
 

添加用户

使用 useradd 命令,我们可以创建新用户。
一下是在创建用户时会涉及到的相关文件和目录:

名称 类型 用途 预览
/etc/default/useradd 文件 useradd 命令的默认变量配置文件。
/etc/login.defs 文件 useradd 命令选项的默认变量配置文件。
/etc/shells 文件 新用户的可用 Shell。
/etc/skel/ 目录 新用户的初始配置文件。

这里是一些 useradd 命令的常见选项:

选项 用途
-b--base-dir 指定用户基目录,没有指定时则使用 /etc/default/useradd 里的 HOME 变量值。
-c--comment 指定用户备注,通常用来持有用户的全名。
-d--home-dir 指定用户主目录。没有指定时则使用 /etc/default/useradd 配置文件里的 HOME 变量值外加用户登录名。
-g--gid 指定用户组。当没有被指定时:如果 /etc/login.defs 文件里的 USERGROUPS_ENAB 变量值为 yes 时则使用用户登录名来创建组名,或者如果变量值为 no 时则使用 /etc/default/useradd 配置文件里的 GROUP 变量值来作为用户组编号。
-G--groups 指定用户辅助组。
-k--skel 指定一个目录,该目录中包含将要拷贝至用户主目录的文件和目录。如果没有被指定,则路径为 /etc/default/useradd 配置文件里的 SKEL 变量值或 /etc/skel
-m--create-home 如果用户主目录不存在则创建。如果该选项未被指定并且 /etc/login.defs 配置文件中的 CREATE_HOME 变量不是 yes 则不会创建其主目录。
-M--no-create-home 不要创建用户主目录,该选项无视 /etc/login.defs 文件中的 CREATE_HOME 变量值。
-r--system 如果指定了该选项,则创建的是系统用户。系统用户的编号介于 /etc/login.defs 配置文件的 SYS_UID_MINSYS_UID_MAX 值之间。默认情况下不为系统用户创建主目录,而我们可以通过指定 -m 选项来创建主目录。由于系统用户是不可登录用户,所以其没有登录信息。
-s--shell 指定用户登录 Shell。如果该选项未被指定或该选项接收到的是空值,则创建的用户使用系统默认的登陆 Shell。
-u--uid 指定用户编号。指定的值必须大于或等于 /etc/login.defs 配置文件中的 UID_MIN 变量值并且小于或等于相同文件中的 UID_MAX 变量值。

默认情况下通过 useradd 命令创建的新用户编号是最后一个用户的编号加 1 的值,随后创建一个与用户登录名相同的组:

useradd dong
tail -1 /etc/group
tail -1 /etc/passwd
tail -1 /etc/shadow
ll /home | grep 'dong'

输出 group、passwd 以及 shadow 等文件的最后创建用户详细信息

指定用户备注(全名)

使用 -c 选项,我们可以指定用户的备注信息:

useradd -c 'Dong Chen' dong_comment
tail -1 /etc/group
tail -1 /etc/passwd
tail -1 /etc/shadow
ll /home | grep 'dong_comment'

输出 group、passwd 以及 shadow 等文件中最后创建的自定义备注的用户详细信息

指定主目录

使用 -d 选项,我们可以指定用户主目录:

useradd -d /home/dong_home_dir dong_home
tail -1 /etc/group
tail -1 /etc/passwd
tail -1 /etc/shadow
ll /home | grep 'dong_home_dir'

输出 group、passwd 以及 shadow 等文件中最后创建的自定义主目录的用户详细信息。主目录有别于登录名。

指定用户组

使用 -g 选项,我们可以指定用户组:

useradd -g dongs_group dong_group
tail -1 /etc/group
tail -1 /etc/passwd
tail -1 /etc/shadow
ll /home | grep 'dong_group'

输出 group、passwd 以及 shadow 等文件中最后创建的自定义组的用户详细信息。用户被指定给了现有的组,所以没有创建新组。

指定用户编号

使用 -u 选项,我们可以指定用户编号:

useradd -u 1100 dong_id
tail -1 /etc/group
tail -1 /etc/passwd
tail -1 /etc/shadow
ll /home | grep 'dong_id'

输出 group、passwd 以及 shadow 等文件中创建的自定义用户编号的用户详细信息。用户编号和组编号都为 1100。

创建系统用户

使用 -r 选项,我们可以创建系统用户:

useradd -r dong_system
tail -1 /etc/group
tail -1 /etc/passwd
tail -1 /etc/shadow
ll /home | grep 'dong_system'

输出 group、passwd 以及 shadow 文件中最后创建的系统用户详细信息。用户没有主目录及登录能力。
 

更改用户

我们可以通过 usermod 命令来更改用户的信息。
这里是一些 usermod 命令的选项:

选项 用途
-a--append -G 命令一同使用,如果被指定了,则保留用户先前的辅助组。
-c--comment 指定用户的新备注,就是,用户的全名。
-d--home 指定用户的主目录。
-e--expiredate 指定用户的过期日期。通常被用于指定为一个 1 值以禁用一个用户。
-g--gid 指定用户的新组,会替换用户主目录中所有文件的组权限。
-G--groups 指定用户的新辅助组。添加 -a 选项以保留先前的辅助组。
-l--login 指定用户的新登录名。
-L--lock 锁定指定的用户。
-m--move-home 将先前主目录内容移至新主目录;该选项只能与 -d 选项一起使用。
-s--shell 指定用户的新登录 Shell。如果传入的为空值,则用户使用系统默认的登陆 Shell。
-u--uid 指定用户的新编号。
-U--unlock 解锁指定的用户。

追加辅助组

使用 -a-G 选项的组合,我们可以给用户追加更多的辅助组:

id dong_group
usermod -a -G dongs_another_group dong_group
id dong_group

在追加辅助组之前及之后输出用户编号及组编号。
 

删除用户

我们可以通过 userdel 命令来删除用户。
这里是 userdel 命令的一些选项:

选项 用途
-r--remove 如果该选项未被指定,则不会删除用户主目录及其邮件池目录。

删除用户但保留其关联的主目录

默认情况下,userdel 命令在删除用户时将保留其主目录及其邮箱目录:

useradd user_surplus
id user_surplus
userdel user_surplus
id user_surplus
ll /home | grep 'user_surplus'

在删除新建用户之前及之后输出其编号及其组编号。没有删除其主目录。

删除用户及其关联的主目录

使用 -r 选项,则用户主目录及邮箱目录将会被一同删除:

useradd user_surplus2
id user_surplus2
userdel -r user_surplus2
id user_surplus2
ll /home | grep 'user_surplus2'

在删除新建用户之前及之后输出其编号及其组编号。顺带地删除了其主目录。
 

密码文件完整性验证

我们可以使用 pwck 命令来检查用户账户的完整性:

pwck

输出密码文件完整性验证的结果。
 

用户密码

我们可以使用 passwd 命令来指定或更改用户的登录密码。
这里是 passwd 命令的一些常见选项:

选项 用途
--stdin 从标准 IO 输入获取新密码。
-d--delete 删除用户密码。
-e--expire 使用户密码过期。在用户下次登录时,其需要制定一个新密码。
-l--lock 锁定用户密码。当通过 SSH Key 登录时,该选项将被无视。
-u--unlock 解锁用户密码。

通过 IO 输入设置用户密码

使用 --stdin 选项,则 passwd 命令从 IO 获取数据并将其作为密码:

cat /etc/shadow | grep 'dong:'
echo "dongspwd" | passwd --stdin dong
cat /etc/shadow | grep 'dong:'

在更改用户密码之前及之后输出 shadow 文件。
 

用户群密码

我们可以使用 chpasswd 命令来指定或更改用户的登录密码。
这里是 chpasswd 命令的一些常见选项:

选项 用途
-c--crypt-method 使用一个方法来对密码进行加密操作。可以使用的有诸如 DESMD5NONESHA256SHA512 等存在于 libc 中的算法。
-s--sha-rounds 默认情况下,系统使用 5000 个回合来对密码进行加密操作。我们可以指定介于 1000999999999 之间的值。

通过 IO 输入设置多个用户的密码

我们首先来删除用户 dong 的密码:

passwd -d dong
cat /etc/shadow | grep 'dong:'

删除了 dong 的密码。
我们可以使用 chpasswd 命令来批量更改多个用户的密码:

cat /etc/shadow | grep -E 'dong:|dongchen:'
printf '%s\n' 'dong:dong123' 'dongchen:chen123' | chpasswd
cat /etc/shadow | grep -E 'dong:|dongchen:'

分别将密码分配给用户 dong 与 dongchen。
 

更改 Shell

我们可以使用 chsh 命令来更改用户的登陆 Shell。
这里是 chsh 命令的一些常见选项:

选项 用途
-l--list-shells 输出 /etc/shells 文件中的 Shell 列表。
-s--shell 指定用户的登陆 Shell。

检查可用的 Shell

使用 -l 选项,我们可以查看可用的登陆 Shell:

chsh -l    # 等价于 chsh --list-shells

输出可用的登陆 Shell

更改至新的 Shell

使用 -s 选项,我们可以给用户分配登陆 Shell:

useradd dongchen
finger dongchen
chsh -s /bin/sh dongchen
finger dongchen

在更改登陆 Shell 之前及之后输出新建用户的详细信息。
 

更改 Finger

使用 chfn 命令,我们可以更改用户的详细信息。
这里是 chfn 命令的一些常见选项:

选项 用途
-f--full-name 指定用户的全名。
-o--office 指定用户的办公室编号。
-p--office-phone 指定用户的办公室座机号码。
-h--home-phone 指定用户的家庭座机号码。

更改用户详情

使用 -f 选项,我们可以更改用户的基本信息:

finger dongchen
chfn -f 'Dong Chen' -o 1024 -p 12345678 -h 87654321 dongchen
finger dongchen

在更改用户详细信息之前及之后输出用户的详细信息。
 

更改用户账户可用性

使用 chage 命令,我们可以更改用户密码的过期信息。
这里是 chage 命令的一些常见选项:

选项 用途
-d--lastday 指定最近一次更改密码的日期。
-E--expiredate 指定密码的过期日期。
-l--inactive 指定密码过期剩余天数。
-l--list 输出用户账户的可用性信息。
-m--mindays 指定需要更改密码的最小剩余天数。
-M--maxdays 指定需要更改密码的最大剩余天数。
-W--warndays 指定提醒用户需要更改密码的剩余天数。

输出用户账户可用性信息

使用 -l 选项,我们可以查看用户账户的可用性信息:

chage -l dongchen

输出用户账户的可用性信息。
 

我所撰写的英文版本

46. User Management - Creation, Modification and Deletion
 

引用

参见

上一篇:

想看手册的其他内容?请访问该手册的所属专栏:《Linux 管理员手册:既简单又深刻

发布了151 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/stevenchen1989/article/details/104307092