CentOS Stream 8 用户权限设置实操指南
一 用户与用户组管理
- 创建用户与家目录:sudo useradd -m username;设置密码:sudo passwd username。
- 创建组:sudo groupadd groupname。
- 将用户加入组:sudo usermod -aG groupname username(追加到附加组,避免覆盖原有组)。
- 修改文件属主与属组:sudo chown owner:group /path;仅改属组:sudo chgrp group /path。
- 常用查询:id username(查看所属组)、groups username、ls -l(查看权限与属主)。
二 文件与目录权限
- 基本权限模型:三类权限对所有者/所属组/其他分别控制读r/写w/执行x;数字表示法如755(rwxr-xr-x)、644(rw-r–r–)、775(rwxrwxr-x)。
- 常用命令:
- 设置权限:sudo chmod 755 /path/to/dir;sudo chmod 644 /path/to/file。
- 递归设置:sudo chmod -R 755 /path/to/dir(谨慎用于生产目录)。
- 设置属主/属组:sudo chown -R user:group /path。
- 目录执行位的意义:对目录而言,x 表示“可进入/可遍历”,缺少 x 将无法访问目录内文件。
- 安全建议:遵循最小权限原则,仅开放必需权限;慎用setuid/setgid(sudo chmod +s),仅在确有必要时使用。
三 sudo 与提权控制
- 推荐方式:将用户加入 wheel 组(RHEL/CentOS 系列默认允许 wheel 组成员通过 sudo 提权)。命令:sudo usermod -aG wheel username。
- 精细授权:
- 编辑 sudoers 用 visudo:sudo visudo(语法检查,防止误改导致失权)。
- 全部命令免密:在 /etc/sudoers 或 /etc/sudoers.d/username 中添加:
username ALL=(ALL) NOPASSWD:ALL
- 仅允许特定命令:
username ALL=(ALL) NOPASSWD:/usr/bin/du,/usr/bin/ping
- 通过文件管理授权(更易维护):echo “username ALL=(ALL) NOPASSWD:ALL” | sudo tee /etc/sudoers.d/username(权限建议 0440)。
四 登录与访问控制
- 禁止 root 远程登录:编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no,保存后重启服务:sudo systemctl restart sshd。
- 仅允许指定用户登录:AllowUsers user1@*(按需添加多个用户)。
- 重要变更前先备份配置,并确保有控制台/带外方式可恢复,避免锁死。
五 SELinux 与审计加固
- SELinux 管理:
- 查看状态:getenforce(返回 Enforcing/Permissive/Disabled)。
- 文件/目录上下文与策略:sudo semanage fcontext -a -t httpd_sys_rw_content_t “/path(/.*)?”;应用:sudo restorecon -Rv /path。
- 生产环境不建议直接关闭 SELinux(编辑 /etc/selinux/config 将 SELINUX=disabled),应优先通过策略与上下文修正解决问题。
- 审计与合规:
- 安装并启用审计服务:sudo dnf install -y audit;sudo systemctl enable --now auditd。
- 按需添加审计规则(例如监控关键目录/命令),并定期检查日志(/var/log/audit/audit.log)。