CentOS Stream 8 用户权限管理实操指南
一 用户与用户组管理
- 创建用户与家目录:使用命令 useradd -m username;为用户设置密码:passwd username。
- 创建用户组:groupadd groupname。
- 将用户加入附加组(不影响原有主组):usermod -aG groupname username。
- 修改用户属性(如主组、登录Shell等):usermod [选项] username。
- 查看用户信息:id username、groups username。
- 说明:上述命令需由具有管理员权限的用户执行(通常通过 sudo)。
二 文件与目录权限基础
- 查看权限与属性:ls -l /path;如需更详细信息可用 stat /path。
- 修改权限(数字法):如 chmod 755 /path(所有者 rwx,组 rx,其他 rx)、chmod 644 /path(所有者 rw,组 r,其他 r)。
- 修改权限(符号法):如 chmod u+x file(给所有者加执行)、chmod g-w file(移除组写)、chmod o=r file(将其他设为只读)。
- 修改属主与属组:chown owner:group /path;仅改属组可用 chgrp group /path。
- 理解权限位:每组三位分别对应 r(4)/w(2)/x(1),按位相加得到权限值。
三 进阶权限控制
- 特殊权限:
- SUID:执行时以文件所有者权限运行,设置方式:chmod u+s /path/file。
- SGID:执行时以文件所属组权限运行;用于目录时,新创建文件继承目录的组,设置方式:chmod g+s /path/dir。
- Sticky Bit:用于目录,仅文件所有者或 root 可删除或重命名其中的文件,设置方式:chmod +t /path/dir。
- ACL(访问控制列表,细粒度授权):
- 查看:getfacl /path。
- 设置:对用户授权 setfacl -m u:username:rwx /path;对组授权 setfacl -m g:groupname:r /path。
- 删除某用户ACL:setfacl -x u:username /path。
- 使用提示:为服务目录(如 /var/www)配置 ACL 或合适的 组写权限,可避免直接放宽“其他用户”的权限。
四 提权与 sudo 配置
- 将用户加入 wheel 组以获得完整 sudo 能力(推荐做法):usermod -aG wheel username。
- 精细授权:使用 visudo 编辑 /etc/sudoers,可为特定用户/组配置仅允许执行某些命令,例如:
- 允许用户 alice 无需密码执行指定命令:alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl, /usr/bin/apt(示例命令,按需调整)。
- 安全建议:避免直接编辑 /etc/sudoers,始终使用 visudo;仅授予最小必要权限,降低风险。
五 安全加固与审计
- 口令策略与账户安全:
- 设置复杂口令(包含大小写字母、数字与特殊字符,长度至少 10 位)。
- 检查空口令账户:awk -F “:” ‘$2==“” {print $1}’ /etc/shadow;发现即强制修改密码。
- 保护关键账户文件:chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow(变更前务必做好备份与变更计划)。
- SELinux:
- 保持 SELinux 为 enforcing 模式,按需使用 semanage fcontext 与 restorecon 管理文件上下文,例如:
- 为目录设置上下文:semanage fcontext -a -t httpd_sys_rw_content_t “/data/www(/.*)?”
- 应用上下文:restorecon -Rv /data/www
- 审计与合规:
- 安装并启用审计服务:dnf install audit -y && systemctl enable --now auditd;
- 通过 /etc/audit/auditd.conf 与 audit.rules 配置审计规则,记录关键文件访问与权限变更。
- 风险提示:变更 SELinux 策略或锁定关键系统文件前,请在测试环境验证并准备回滚方案,以免影响业务连续性。