8. 用户与权限管理
本章节指导在 RHEL 9(主机名 LinuxDC)上以 root 用户使用 SecureCRT 进行用户和文件权限管理,配合 SecureFX 传输配置文件。内容涵盖用户管理(添加、修改、删除用户,组管理)、sudo 配置(包括 sudoers 文件、wheel 组管理和日志审计)以及文件权限管理(设置权限、更改所有者、特殊权限)。文档适合初学者快速上手和运维人员日常维护,所有操作在 LinuxDC 环境中测试,确保实验一致性。
8.1 前提条件
在开始用户与权限管理之前,请确保满足以下条件:
- 系统环境:RHEL 9 已正确安装(参考第 1 章),主机名设置为
LinuxDC。 - 远程工具:
- 使用 SecureCRT 通过 SSH2 协议(端口 2222,参考第 9 章)以
root用户登录系统。 - 使用 SecureFX 通过 SFTP 协议传输文件。
- 权限要求:以
root用户身份操作。 - 网络配置:确保 SSH 服务 (
sshd) 已启用且端口 2222 可访问(参考第 7 章)。
⚠️ 注意:请提前备份重要文件和配置文件(如
/etc/sudoers)。在 RHEL 10 中,用户管理工具可能集成更多自动化审计功能,如内置的密码策略增强。
8.2 用户管理
8.2.1 添加用户
- 创建用户
testuser:useradd -m -s /bin/bash -G wheel testuser # 创建用户,添加主目录,指定 Shell,并加入 wheel 组 passwd testuser # 设置密码
🧠 知识点:
-m创建主目录,-s指定 Shell,-G添加到附加组。wheel 组用于 sudo 权限。
8.2.2 修改用户
- 修改用户组或密码:
usermod -aG developers testuser # 添加到 developers 组 passwd -e testuser # 强制过期密码,下次登录需更改
✅ 检查点:
id testuser查看用户 UID、GID 和组。
8.2.3 删除用户
- 删除用户并移除主目录:
userdel -r testuser # 删除用户并移除主目录
⚠️ 注意:
-r移除主目录和邮件池。确认无进程占用。
8.3 组管理
8.3.1 创建组
- 创建组
developers:groupadd developers # 创建新组
8.3.2 修改组
- 添加用户到组:
gpasswd -a testuser developers # 添加用户到组
8.3.3 删除组
- 删除组:
groupdel developers # 删除组(组内无用户)
🧠 知识点:组用于批量权限管理。查看组:
getent group developers。
8.4 sudo 配置
🧠 知识点:sudo 允许普通用户以 root 权限执行命令,通过
/etc/sudoers配置。推荐使用 visudo 编辑以避免语法错误。在 RHEL 10 中,sudo 支持更多日志集成和插件扩展,提升审计能力。
8.4.1 编辑 sudoers 文件
- 使用 visudo 编辑:
visudo # 编辑 /etc/sudoers # 示例添加: testuser ALL=(ALL) ALL # 允许 testuser 执行所有命令
8.4.2 wheel 组管理
- 启用 wheel 组 sudo:
visudo # 取消注释: %wheel ALL=(ALL) ALL
💡 提示:优先使用 wheel 组,避免直接修改 root 权限。
8.4.3 无密码 sudo
- 配置无密码:
visudo # 添加: testuser ALL=(ALL) NOPASSWD: ALL
⚠️ 注意:
NOPASSWD仅限于安全场景。
8.4.4 日志审计
- 配置 sudo 日志:
visudo # 添加: Defaults logfile = "/var/log/sudo.log"
✅ 检查点:
sudo -l -U testuser查看用户 sudo 权限。
8.5 文件权限管理
8.5.1 设置权限
- 修改权限:
chmod 755 /path/to/file # 设置文件权限(所有者 rwx,其他 r-x) chmod -R 750 /dir # 递归设置目录
🧠 知识点:权限格式:u(用户)+rwx,g(组),o(其他)。数字:4(r)、2(w)、1(x)。
8.5.2 更改所有者
- 更改所有者:
chown testuser:developers /path/to/file # 更改所有者和组 chgrp developers /path/to/file # 只更改组
8.5.3 特殊权限
- 设置 SUID/SGID/Sticky:
chmod u+s /bin/exec # SUID(用户以所有者权限执行) chmod g+s /dir # SGID(组继承) chmod +t /tmp # Sticky(仅所有者删除)
💡 提示:特殊权限用于安全执行,如 passwd 命令。
✅ 检查点:
ls -l /path/to/file查看权限(e.g., -rwsr-xr-x 表示 SUID)。
8.6 常见问题与排查
🔍 故障排查:
-
问题 1:sudo 权限无效
解决:检查/etc/sudoers语法(visudo),重启会话。 -
问题 2:文件权限错误
解决:使用ls -l检查,chmod修正。 -
问题 3:用户无法登录
解决:验证密码(passwd),检查/etc/passwd和/etc/shadow。
💡 提示:日志:
journalctl -u sshd或/var/log/secure排查登录问题。
8.7 实践任务
- 使用 SecureCRT 通过 SSH(端口 2222)以 root 登录
LinuxDC,创建用户testuser并加入 wheel 组。 - 配置 sudo 允许
testuser执行所有命令。 - 创建组
developers,添加testuser。 - 设置文件
/tmp/testfile权限为 644,并更改所有者为testuser:developers。 - 配置无密码 sudo 执行
/usr/bin/dnf,验证日志。
✅ 检查点:
su - testuser切换用户,sudo dnf update测试权限。
8.8 自测问题
-
问题 1:如何创建用户并加入 wheel 组?
答案:useradd -m -G wheel testuser passwd testuser -
问题 2:如何启用 wheel 组 sudo 权限?
答案:visudo # 取消注释 %wheel ALL=(ALL) ALL -
问题 3:如何设置文件权限为 755?
答案:chmod 755 /path/to/file -
问题 4:如何配置 sudo 允许用户无密码运行特定命令?
答案:visudo # 添加: testuser ALL=(ALL) NOPASSWD: /usr/bin/dnf
8.9 补充说明
- 配置文件备份:操作前建议备份
/etc/passwd、/etc/group和/etc/sudoers文件。 - 权限安全:避免为普通用户授予过多权限,优先使用
wheel组管理 sudo 权限。 - 谨慎使用
NOPASSWD选项,仅限于必要场景。
日志监控:检查 /var/log/secure 或 /var/log/sudo.log 以排查用户登录或权限问题。
sudo 最佳实践:使用 /etc/sudoers.d 目录存放自定义规则(如 /etc/sudoers.d/testuser)。
定期更新 sudo 软件包:
dnf update sudo -y # 以 root 执行
💡 提示:如需进一步学习,参考 RHEL 官方文档或 man 手册(如
man useradd、man chmod、man sudoers)。
🧾 总结:
本章完整介绍了 RHEL 9 用户与权限管理的核心操作,包括用户/组管理、sudo 配置和文件权限控制。掌握这些技能可确保系统安全访问与资源控制,为后续 SSH 配置和安全强化奠定基础。