跳转至

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 实践任务

  1. 使用 SecureCRT 通过 SSH(端口 2222)以 root 登录 LinuxDC,创建用户 testuser 并加入 wheel 组。
  2. 配置 sudo 允许 testuser 执行所有命令。
  3. 创建组 developers,添加 testuser
  4. 设置文件 /tmp/testfile 权限为 644,并更改所有者为 testuser:developers
  5. 配置无密码 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 useraddman chmodman sudoers)。


🧾 总结
本章完整介绍了 RHEL 9 用户与权限管理的核心操作,包括用户/组管理、sudo 配置和文件权限控制。掌握这些技能可确保系统安全访问与资源控制,为后续 SSH 配置和安全强化奠定基础。