主题
Linux 用户管理命令 - 详解用户与组管理工具
1. 用户账户管理命令
1.1 useradd - 创建新用户
useradd 命令用于在 Linux 系统中创建新的用户账户。
语法:
bash
useradd [选项] 用户名常用选项:
-c, --comment COMMENT:添加用户的描述信息-d, --home HOME_DIR:指定用户的主目录路径-e, --expiredate EXPIRE_DATE:设置账户过期日期,格式为 YYYY-MM-DD-g, --gid GROUP:指定用户的主组名称或 GID-G, --groups GROUPS:指定用户的附加组列表,多个组用逗号分隔-m, --create-home:自动创建用户的主目录-M, --no-create-home:不创建用户的主目录-N, --no-user-group:不创建与用户名同名的组-p, --password PASSWORD:设置用户密码(已加密的密码)-s, --shell SHELL:指定用户的登录 shell-u, --uid UID:指定用户的 UID
示例:
bash
# 创建基本用户账户
useradd john
# 创建用户并设置主目录、shell 和描述信息
useradd -m -s /bin/bash -c "John Doe" john
# 创建用户并指定 UID、主组和附加组
useradd -u 1005 -g developers -G sudo,users -m mary
# 创建系统用户(无登录 shell)
useradd -r -s /usr/sbin/nologin mysql
# 创建带有过期日期的用户
useradd -e 2023-12-31 temp_user1.2 userdel - 删除用户账户
userdel 命令用于从系统中删除用户账户。
语法:
bash
userdel [选项] 用户名常用选项:
-f, --force:强制删除用户,即使用户当前已登录-r, --remove:删除用户的主目录和邮件文件-Z, --selinux-user:删除用户的 SELinux 用户映射
示例:
bash
# 删除用户,但保留主目录
userdel john
# 删除用户及其主目录和邮件
userdel -r mary
# 强制删除用户
userdel -f temp_user1.3 usermod - 修改用户账户属性
usermod 命令用于修改现有用户账户的属性。
语法:
bash
usermod [选项] 用户名常用选项:
-c, --comment COMMENT:修改用户的描述信息-d, --home HOME_DIR:修改用户的主目录路径-e, --expiredate EXPIRE_DATE:修改账户过期日期-g, --gid GROUP:修改用户的主组-G, --groups GROUPS:修改用户的附加组列表-l, --login NEW_LOGIN:修改用户名-L, --lock:锁定用户账户,禁止登录-s, --shell SHELL:修改用户的登录 shell-u, --uid UID:修改用户的 UID-U, --unlock:解锁用户账户-a, --append:将用户追加到附加组,而不是替换现有组
示例:
bash
# 修改用户的描述信息
usermod -c "Senior Developer" john
# 修改用户的登录 shell
usermod -s /bin/zsh mary
# 修改用户的主目录
usermod -d /home/jdoe john
# 修改用户的主组
usermod -g managers john
# 将用户添加到附加组(不替换现有组)
usermod -a -G sudo,devops john
# 修改用户名
usermod -l john_doe john
# 锁定用户账户
usermod -L temp_user
# 解锁用户账户
usermod -U temp_user1.4 passwd - 设置或修改用户密码
passwd 命令用于设置或修改用户的密码。
语法:
bash
passwd [选项] [用户名]常用选项:
-d, --delete:删除用户的密码,使用户账户无需密码即可登录-e, --expire:强制用户下次登录时修改密码-i, --inactive INACTIVE:设置密码过期后账户宽限期天数-l, --lock:锁定用户密码-n, --minimum DAYS:设置密码最小修改间隔天数-S, --status:显示用户密码的状态-u, --unlock:解锁用户密码-w, --warning DAYS:设置密码过期前的警告天数-x, --maximum DAYS:设置密码最长有效期天数
示例:
bash
# 修改当前用户的密码
passwd
# 修改指定用户的密码(需要管理员权限)
passwd john
# 删除用户的密码
passwd -d temp_user
# 强制用户下次登录时修改密码
passwd -e john
# 锁定用户密码
passwd -l mary
# 解锁用户密码
passwd -u mary
# 查看密码状态
passwd -S john
# 设置密码策略(最小5天,最大90天,提前7天警告)
passwd -n 5 -x 90 -w 7 john1.5 chage - 修改用户密码过期信息
chage 命令用于管理用户的密码过期策略。
语法:
bash
chage [选项] 用户名常用选项:
-d, --lastday LAST_DAY:设置最后一次密码修改日期-E, --expiredate EXPIRE_DATE:设置账户过期日期-I, --inactive INACTIVE:设置密码过期后账户宽限期天数-l, --list:列出用户的密码过期信息-m, --mindays MIN_DAYS:设置密码最小修改间隔天数-M, --maxdays MAX_DAYS:设置密码最长有效期天数-W, --warndays WARN_DAYS:设置密码过期前的警告天数
示例:
bash
# 列出用户的密码过期信息
chage -l john
# 设置用户密码 90 天后过期
chage -M 90 john
# 设置账户在特定日期过期
chage -E 2023-12-31 temp_user
# 设置密码修改后,用户必须等待 3 天后才能再次修改
chage -m 3 john
# 设置密码过期前 7 天开始警告
chage -W 7 john
# 设置密码过期后,账户还有 14 天的宽限期
chage -I 14 john1.6 finger - 查看用户信息
finger 命令用于显示用户的详细信息。
语法:
bash
finger [选项] [用户名]常用选项:
-l:以长格式显示信息-m:仅匹配用户名(忽略大小写)
示例:
bash
# 查看所有登录用户的信息
finger
# 查看特定用户的信息
finger john
# 以长格式查看用户信息
finger -l mary1.7 id - 显示用户和组的 ID
id 命令用于显示用户的 UID、GID 和所属的组。
语法:
bash
id [选项] [用户名]常用选项:
-g, --group:仅显示用户的主组 ID-G, --groups:显示用户所属的所有组 ID-n, --name:与 -g 或 -G 一起使用,显示组名而非 GID-u, --user:仅显示用户的 UID
示例:
bash
# 显示当前用户的 ID 信息
id
# 显示指定用户的 ID 信息
id john
# 仅显示用户的 UID
id -u mary
# 仅显示用户的主组 ID
id -g john
# 显示用户所属的所有组名
id -Gn john1.8 last - 显示用户登录历史
last 命令用于显示用户的登录历史记录。
语法:
bash
last [选项] [用户名]常用选项:
-n, --limit NUMBER:显示最近的 N 条记录-f, --file FILE:指定替代的日志文件-t, --until YYYYMMDDHHMMSS:显示指定日期之前的记录
示例:
bash
# 显示所有用户的最近登录记录
last
# 显示特定用户的登录记录
last john
# 显示最近 10 条登录记录
last -n 10
# 显示特定日期之前的登录记录
last -t 202306300000001.9 who - 显示当前登录用户
who 命令用于显示当前登录到系统的用户信息。
语法:
bash
who [选项]常用选项:
-a, --all:显示所有信息-b, --boot:显示系统启动时间-d, --dead:显示已终止的进程-H, --heading:显示列标题-l, --login:显示登录进程-m:仅显示当前终端的信息(相当于 who am i)-q, --count:仅显示用户数和用户名列表-r, --runlevel:显示当前运行级别
示例:
bash
# 显示当前登录用户
who
# 显示详细信息,包括列标题
who -aH
# 显示系统启动时间
who -b
# 显示当前运行级别
who -r
# 显示当前终端信息
who am i
# 或
who -m2. 组管理命令
2.1 groupadd - 创建新组
groupadd 命令用于在系统中创建新的用户组。
语法:
bash
groupadd [选项] 组名常用选项:
-f, --force:如果组已存在,则退出状态为 0 而不是错误-g, --gid GID:指定组的 GID-r, --system:创建系统组
示例:
bash
# 创建基本组
groupadd developers
# 创建指定 GID 的组
groupadd -g 1005 testers
# 创建系统组
groupadd -r mysql2.2 groupdel - 删除组
groupdel 命令用于从系统中删除组。
语法:
bash
groupdel [选项] 组名注意:
- 不能删除任何用户的主组
- 如果组中有用户,则必须先移除用户
示例:
bash
# 删除组
groupdel testers2.3 groupmod - 修改组属性
groupmod 命令用于修改现有组的属性。
语法:
bash
groupmod [选项] 组名常用选项:
-g, --gid GID:修改组的 GID-n, --new-name NEW_GROUP:修改组的名称
示例:
bash
# 修改组的 GID
groupmod -g 1006 developers
# 修改组的名称
groupmod -n dev_team developers2.4 gpasswd - 管理组密码和成员
gpasswd 命令用于管理组密码和组成员。
语法:
bash
gpasswd [选项] [组名]常用选项:
-a, --add USER:将用户添加到组-d, --delete USER:从组中删除用户-A, --administrators ADMIN,...:设置组管理员-M, --members USER,...:设置组成员列表-r, --remove-password:删除组密码-R, --restrict:限制组访问
示例:
bash
# 将用户添加到组
gpasswd -a john developers
# 从组中删除用户
gpasswd -d mary developers
# 设置组管理员
gpasswd -A john,admin developers
# 设置组成员列表
gpasswd -M john,mary,peter developers
# 删除组密码
gpasswd -r developers2.5 newgrp - 切换当前用户的有效组
newgrp 命令用于临时切换用户的当前有效组。
语法:
bash
newgrp [选项] [组名]常用选项:
-:创建一个新的 shell 环境
示例:
bash
# 切换到指定组
newgrp developers
# 切换到指定组并创建新的 shell 环境
newgrp - developers3. 权限管理命令
3.1 chmod - 修改文件或目录的权限
chmod 命令用于修改文件或目录的访问权限。
语法:
bash
chmod [选项] 模式 文件/目录常用选项:
-R, --recursive:递归修改目录及其内容的权限-v, --verbose:显示详细的权限修改信息
模式表示方法:
- 符号模式:
u(所有者)、g(组)、o(其他)、a(全部);+(添加权限)、-(删除权限)、=(设置权限);r(读)、w(写)、x(执行) - 数字模式:每类用户用一个八进制数字表示,权限对应的值为:
r=4、w=2、x=1
示例:
bash
# 符号模式:给所有者添加执行权限
chmod u+x script.sh
# 符号模式:给组添加读和写权限
chmod g+rw file.txt
# 符号模式:删除其他用户的所有权限
chmod o-rwx file.txt
# 数字模式:设置所有者读/写/执行,组读/执行,其他读权限
chmod 754 file.txt
# 递归修改目录权限
chmod -R 755 /path/to/directory
# 详细显示权限修改
chmod -v 644 file.txt3.2 chown - 修改文件或目录的所有者和组
chown 命令用于修改文件或目录的所有者和所属组。
语法:
bash
chown [选项] 所有者[:组] 文件/目录常用选项:
-R, --recursive:递归修改目录及其内容的所有者和组-v, --verbose:显示详细的所有者和组修改信息
示例:
bash
# 修改文件的所有者
chown john file.txt
# 修改文件的所有者和组
chown john:developers file.txt
# 仅修改文件的组
chown :developers file.txt
# 递归修改目录的所有者和组
chown -R john:developers /path/to/directory
# 详细显示修改信息
chown -v john file.txt3.3 chgrp - 修改文件或目录的所属组
chgrp 命令用于修改文件或目录的所属组。
语法:
bash
chgrp [选项] 组 文件/目录常用选项:
-R, --recursive:递归修改目录及其内容的所属组-v, --verbose:显示详细的所属组修改信息
示例:
bash
# 修改文件的所属组
chgrp developers file.txt
# 递归修改目录的所属组
chgrp -R developers /path/to/directory
# 详细显示修改信息
chgrp -v developers file.txt3.4 umask - 设置默认文件权限
umask 命令用于设置新创建文件和目录的默认权限掩码。
语法:
bash
umask [选项] [掩码]常用选项:
-S, --symbolic:以符号方式显示掩码
示例:
bash
# 显示当前的 umask 值
umask
# 以符号方式显示 umask 值
umask -S
# 设置新的 umask 值(文件默认权限为 644,目录默认权限为 755)
umask 022
# 设置更严格的 umask 值(文件默认权限为 600,目录默认权限为 700)
umask 0774. sudo 权限管理
4.1 sudo - 以其他用户身份执行命令
sudo 命令允许授权用户以其他用户(通常是 root)的身份执行命令。
语法:
bash
sudo [选项] 命令常用选项:
-b, --background:在后台运行命令-i, --login:以目标用户身份登录并运行 shell-l, --list:列出用户可以执行的命令-s, --shell:运行指定的 shell-u, --user=USER:以指定用户身份执行命令 -V, --version:显示版本信息
示例:
bash
# 以 root 身份执行命令
sudo apt update
# 以特定用户身份执行命令
sudo -u john ls -la /home/john
# 列出用户可以执行的 sudo 命令
sudo -l
# 以 root 身份登录 shell
sudo -i
# 或
sudo su -
# 在后台运行命令
sudo -b systemctl restart nginx4.2 visudo - 安全编辑 sudoers 文件
visudo 命令用于安全地编辑 /etc/sudoers 文件,提供了语法检查功能。
语法:
bash
visudo [选项]常用选项:
-f, --file=FILE:编辑指定的 sudoers 文件-c, --check:检查 sudoers 文件的语法-s, --strict:严格检查模式
示例:
bash
# 编辑主 sudoers 文件
visudo
# 检查 sudoers 文件语法
visudo -c
# 编辑指定的 sudoers 文件
visudo -f /etc/sudoers.d/custom5. 高级用户管理技术
5.1 PAM (Pluggable Authentication Modules)
PAM 是 Linux 系统中的可插拔认证模块,提供了灵活的认证机制。
配置文件:
/etc/pam.d/:包含各服务的 PAM 配置文件/etc/security/:包含 PAM 模块的配置文件
常用 PAM 模块:
pam_unix:标准 Unix 认证pam_cracklib:密码强度检查pam_tally2:登录失败次数限制pam_limits:资源限制
示例:设置密码强度策略(编辑 /etc/pam.d/system-auth):
password requisite pam_cracklib.so retry=3 minlen=8 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1示例:设置登录失败锁定策略(编辑 /etc/pam.d/system-auth):
auth required pam_tally2.so deny=5 unlock_time=1800 even_deny_root root_unlock_time=18005.2 资源限制配置
/etc/security/limits.conf 文件用于设置系统资源限制,控制用户可以使用的系统资源量。
配置格式:
username|@groupname type resource limit常用资源类型:
core:core 文件大小限制data:进程数据段大小限制fsize:文件大小限制memlock:最大锁定内存地址空间nofile:最大打开文件数stack:最大堆栈大小cpu:CPU 时间限制nproc:最大进程数
示例:限制用户最多打开 1024 个文件:
john hard nofile 1024示例:限制组最多创建 50 个进程:
@developers hard nproc 506. 总结
Linux 用户管理命令提供了全面的功能,用于创建、修改、删除用户和组,以及管理权限和资源限制。本文详细介绍了各种用户管理命令的语法、选项和使用示例。
通过本文的学习,您应该能够:
- 使用 useradd、userdel、usermod 等命令管理用户账户
- 使用 groupadd、groupdel、groupmod 等命令管理用户组
- 使用 chmod、chown、chgrp 等命令管理文件和目录的权限
- 使用 passwd 和 chage 命令设置密码策略
- 使用 sudo 和 visudo 命令管理管理员权限
- 了解 PAM 和资源限制配置等高级用户管理技术
掌握这些命令对于系统管理员来说是必不可少的,它们提供了强大的工具来维护 Linux 系统的安全性和多用户环境的管理。在使用这些命令时,应特别注意权限问题,并遵循最小权限原则,以确保系统的安全和稳定。