开篇词
为了便于对用户的管理,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_MIN 与 SYS_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'
指定用户备注(全名)
使用 -c
选项,我们可以指定用户的备注信息:
useradd -c 'Dong Chen' dong_comment
tail -1 /etc/group
tail -1 /etc/passwd
tail -1 /etc/shadow
ll /home | grep 'dong_comment'
指定主目录
使用 -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'
指定用户组
使用 -g
选项,我们可以指定用户组:
useradd -g dongs_group dong_group
tail -1 /etc/group
tail -1 /etc/passwd
tail -1 /etc/shadow
ll /home | grep 'dong_group'
指定用户编号
使用 -u
选项,我们可以指定用户编号:
useradd -u 1100 dong_id
tail -1 /etc/group
tail -1 /etc/passwd
tail -1 /etc/shadow
ll /home | grep 'dong_id'
创建系统用户
使用 -r
选项,我们可以创建系统用户:
useradd -r dong_system
tail -1 /etc/group
tail -1 /etc/passwd
tail -1 /etc/shadow
ll /home | grep 'dong_system'
更改用户
我们可以通过 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:'
用户群密码
我们可以使用 chpasswd
命令来指定或更改用户的登录密码。
这里是 chpasswd
命令的一些常见选项:
选项 | 用途 |
---|---|
-c 或 --crypt-method |
使用一个方法来对密码进行加密操作。可以使用的有诸如 DES 、MD5 、NONE 、SHA256 、SHA512 等存在于 libc 中的算法。 |
-s 或 --sha-rounds |
默认情况下,系统使用 5000 个回合来对密码进行加密操作。我们可以指定介于 1000 和 999999999 之间的值。 |
通过 IO 输入设置多个用户的密码
我们首先来删除用户 dong
的密码:
passwd -d dong
cat /etc/shadow | grep 'dong:'
我们可以使用 chpasswd
命令来批量更改多个用户的密码:
cat /etc/shadow | grep -E 'dong:|dongchen:'
printf '%s\n' 'dong:dong123' 'dongchen:chen123' | chpasswd
cat /etc/shadow | grep -E 'dong:|dongchen:'
更改 Shell
我们可以使用 chsh
命令来更改用户的登陆 Shell。
这里是 chsh
命令的一些常见选项:
选项 | 用途 |
---|---|
-l 或 --list-shells |
输出 /etc/shells 文件中的 Shell 列表。 |
-s 或 --shell |
指定用户的登陆 Shell。 |
检查可用的 Shell
使用 -l
选项,我们可以查看可用的登陆 Shell:
chsh -l # 等价于 chsh --list-shells
更改至新的 Shell
使用 -s
选项,我们可以给用户分配登陆 Shell:
useradd dongchen
finger dongchen
chsh -s /bin/sh dongchen
finger dongchen
更改 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 管理员手册:既简单又深刻》