在CentOS Stream 8中,用户权限管理是保障系统安全的核心环节,需遵循最小权限原则,通过用户/组管理、文件权限控制、sudo权限限制及SELinux等多维度实现。以下是具体操作步骤:
用户权限的基础是合理划分用户和组。通过以下命令完成基础管理:
useradd命令创建新用户(-m选项自动创建家目录)。sudo useradd -m newuser
passwd命令为用户设置初始密码(需符合复杂度要求)。sudo passwd newuser
usermod命令将用户添加到指定组(-aG表示追加到附加组,避免移除原有组)。sudo usermod -aG developers newuser # 将newuser添加到developers组
groupadd命令创建新组。sudo groupadd admins
userdel(-r选项同时删除家目录)和groupdel命令。sudo userdel -r olduser # 删除用户及家目录
sudo groupdel oldgroup # 删除组
文件权限决定了用户对资源的访问能力,需通过以下命令调整:
ls -l命令查看文件/目录的权限、所有者及组信息。ls -l /path/to/file # 示例输出:-rw-r--r-- 1 user group 0 Oct 30 10:00 file
sudo chmod 755 /path/to/directory # 所有者:rwx(7),组:r-x(5),其他:r-x(5)
sudo chmod 640 /path/to/config.conf # 所有者:rw-(6),组:r--(4),其他:---(0)
sudo chmod u+x script.sh # 给所有者添加执行权限
sudo chmod g-w data.txt # 移除组的写权限
sudo chmod o=r report.pdf # 给其他用户只读权限
chown(修改所有者)和chgrp(修改组)命令。sudo chown newuser:newgroup /path/to/file # 同时修改所有者和组
sudo chown root /path/to/systemfile # 仅修改所有者
sudo chgrp developers /path/to/project # 仅修改组
passwd命令)。sudo chmod u+s /usr/bin/find # 设置SUID
sudo chmod g+s /var/www/html # 设置SGID
/tmp)。sudo chmod +t /shared/tmp # 设置粘滞位
传统权限无法满足细粒度需求时,可使用ACL为特定用户/组分配权限:
sudo yum install acl -y
getfacl命令查看文件/目录的ACL规则。getfacl /path/to/file
sudo setfacl -m u:alice:rwx /path/to/project # 允许alice读写执行
sudo setfacl -m g:devs:r-x /path/to/code # 允许devs组读执行
sudo setfacl -x u:bob /path/to/file # 移除bob的权限
限制普通用户使用sudo执行管理员命令,降低root账户滥用风险:
wheel组的用户可使用sudo。sudo usermod -aG wheel newuser # 将newuser添加到wheel组
visudo命令编辑/etc/sudoers文件(避免语法错误),添加以下内容:
newuser ALL=(ALL) ALL
alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart apache2, /usr/bin/apt update
注:
NOPASSWD表示执行指定命令时无需输入密码,需谨慎使用。
SELinux提供强制访问控制(MAC),进一步增强权限安全性:
sestatus # 显示SELinux是否启用(Enforcing/Permissive/Disabled)
sudo setenforce 0 # 临时设置为Permissive模式(不阻止违规操作,仅记录日志)
/etc/selinux/config文件,将SELINUX=enforcing改为SELinux=permissive(测试环境)或disabled(生产环境需谨慎)。sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html(/.*)?" # 添加自定义上下文
sudo restorecon -Rv /var/www/html # 恢复默认上下文
强化口令安全性,降低账户被破解风险:
@#%)的口令,长度≥10位。awk命令查找/etc/shadow中的空口令账户(第二字段为空),并强制设置口令。awk -F: '($2 == "") {print $1}' /etc/shadow # 列出空口令账户
sudo passwd emptyuser # 为emptyuser设置口令
chattr命令将/etc/shadow设为不可修改(防止非授权删除或修改)。sudo chattr +i /etc/shadow # 锁定文件
sudo chattr -i /etc/shadow # 解锁文件(需修改时)
通过以上步骤,可实现CentOS Stream 8用户权限的精细化管理。需定期审计权限设置(如使用auditd监控文件访问),确保符合最小权限原则。