在CentOS镜像(如Docker镜像或虚拟机镜像)中管理用户权限,需围绕用户账户、组、文件权限、sudo权限及高级安全机制展开,以下是具体步骤:
useradd命令,常用参数包括-m(自动创建主目录)、-G(添加附加组)。例如创建用户appuser并加入developers组:sudo useradd -m -G developers appuser
passwd命令为用户设置密码:sudo passwd appuser
userdel命令,-r参数可同时删除主目录及邮件池:sudo userdel -r appuser
usermod命令可调整用户名、主目录、默认Shell等。例如将appuser的主目录改为/opt/appuser:sudo usermod -d /opt/appuser appuser
groupadd命令创建组,例如创建devops组:sudo groupadd devops
usermod -aG将用户添加到附加组(-a表示追加,避免覆盖原有组);gpasswd -d从组中移除用户。例如将appuser加入devops组:sudo usermod -aG devops appuser
groupdel命令删除组,若组为用户的主组则需先删除用户:sudo groupdel devops
chown命令更改文件/目录的所有者及所属组,-R参数递归处理子目录。例如将/var/www/html的所有者设为appuser,组设为developers:sudo chown -R appuser:developers /var/www/html
chmod命令通过符号或数字设置权限。例如:
755(所有者可读写执行,组及其他用户可读执行);u+x(给所有者添加执行权限)。script.sh设为750权限:sudo chmod 750 script.sh
umask设置新建文件的默认权限(如umask 022表示文件默认权限为644,目录为755)。wheel组默认拥有sudo权限,通过usermod将用户加入该组:sudo usermod -aG wheel appuser
visudo命令安全编辑/etc/sudoers文件,避免语法错误。例如允许appuser无需密码重启httpd服务:sudo visudo
添加以下行:appuser ALL=(ALL) NOPASSWD: /usr/sbin/systemctl restart httpd
sestatus(Enforcing为启用,Permissive为宽松模式);sudo setenforce 0(Permissive)、sudo setenforce 1(Enforcing);/etc/selinux/config文件中的SELINUX=参数(如SELINUX=permissive)。sudo tune2fs -o acl /dev/sdXn(替换为实际分区);setfacl -m u:appuser:rwx /path/to/file(给appuser添加读写执行权限)。chage命令设置密码有效期,例如要求用户appuser每90天更换密码,过期前7天提醒:sudo chage -M 90 -W 7 appuser
auditd服务监控用户操作,安装并配置:sudo yum install audit -y
sudo systemctl enable auditd && sudo systemctl start auditd
添加审计规则(如监控/etc/passwd文件的修改):sudo auditctl -w /etc/passwd -p wa -k passwd_changes
以上步骤覆盖了CentOS镜像中用户权限管理的核心场景,操作时需遵循最小权限原则(仅授予用户必要的权限),避免过度授权导致安全风险。