温馨提示×

CentOS Stream 8用户权限设置详解

小樊
35
2025-11-05 18:44:20
栏目: 智能运维

CentOS Stream 8用户权限设置详解

一、用户与组管理:权限分配基础

用户权限管理的核心是用户-组-权限的绑定,需先完成用户和组的创建与关联。

1. 创建用户与组

  • 创建用户:使用useradd命令,-m选项自动创建用户主目录(如/home/username)。
    示例:sudo useradd -m newuser
  • 创建组:使用groupadd命令创建用户组。
    示例:sudo groupadd devgroup
  • 设置用户密码:通过passwd命令为用户设置初始密码(需符合复杂度要求)。
    示例:sudo passwd newuser

2. 关联用户与组

  • 添加用户到附加组:使用usermod -aG命令(-a表示追加,避免移除原有组)。
    示例:将newuser添加到devgroup组:sudo usermod -aG devgroup newuser
  • 修改用户主组:使用usermod -g命令(-g指定主组,会覆盖原有主组)。
    示例:将newuser的主组改为devgroupsudo usermod -g devgroup newuser
  • 查看用户组信息:通过id命令查看用户的UID、GID及所属组。
    示例:id newuser

二、文件/目录权限设置:控制访问级别

文件/目录的权限分为**读(r)、写(w)、执行(x)**三类,分别对应用户(owner)、组(group)、其他用户(others)三级权限。

1. 查看权限

使用ls -l命令查看文件/目录的详细权限信息(如-rw-r--r--表示所有者有读写权限,组和其他用户有读权限)。
示例:ls -l /path/to/file

2. 修改权限(chmod命令)

  • 符号表示法:通过u(用户)、g(组)、o(其他)、a(所有)指定对象,+(添加)、-(移除)、=(设置)权限。
    示例:给所有者添加执行权限:sudo chmod u+x script.sh
  • 数字表示法:用三位八进制数表示权限(4=读、2=写、1=执行),如755表示所有者有rwx,组和其他用户有r-x
    示例:设置目录为755权限:sudo chmod 755 /path/to/dir

3. 修改所有者/组(chown/chgrp命令)

  • 修改所有者:使用chown命令,格式为chown new_owner:group file(可同时修改所有者和组)。
    示例:将file.txt的所有者改为admin,组改为devgroupsudo chown admin:devgroup file.txt
  • 仅修改组:使用chgrp命令。
    示例:将file.txt的组改为devgroupsudo chgrp devgroup file.txt

4. 特殊权限设置

  • SUID(Set User ID):使文件执行时临时拥有所有者的权限(如/usr/bin/passwd)。
    示例:sudo chmod u+s /path/to/executable
  • SGID(Set Group ID):使文件执行时拥有所属组的权限,或目录下新建文件继承目录的组。
    示例:sudo chmod g+s /path/to/dir
  • 粘滞位(Sticky Bit):用于目录,确保只有文件所有者能删除/重命名自己的文件(如/tmp目录)。
    示例:sudo chmod +t /path/to/dir

三、高级权限控制:ACL与sudo

传统权限无法满足细粒度需求时,可使用ACL(访问控制列表)sudo机制。

1. ACL(访问控制列表)

  • 查看ACL:使用getfacl命令查看文件/目录的ACL规则。
    示例:getfacl /path/to/file
  • 设置ACL:使用setfacl命令添加/删除权限。
    示例:给用户alice添加读写权限:sudo setfacl -m u:alice:rw /path/to/file
    示例:给组devgroup添加读权限:sudo setfacl -m g:devgroup:r /path/to/file
    示例:删除用户bob的权限:sudo setfacl -x u:bob /path/to/file

2. sudo权限配置

  • 将用户加入sudo组:默认情况下,wheel组的用户可使用sudo执行管理员命令。
    示例:sudo usermod -aG wheel username
  • 自定义sudo规则:使用visudo命令编辑/etc/sudoers文件(避免语法错误),添加特定命令的权限。
    示例:允许deploy用户无需密码执行systemctl restart nginx
    deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx

四、SELinux与安全加固

SELinux(安全增强型Linux)提供强制访问控制(MAC),进一步提升系统安全性。

1. 检查SELinux状态

使用sestatus命令查看SELinux是否启用及模式(Enforcing/Permissive/Disabled)。
示例:sestatus

2. 临时/永久修改SELinux模式

  • 临时关闭sudo setenforce 0(重启后恢复)
  • 永久关闭:编辑/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled(需重启系统)

3. 调整SELinux策略

若需允许应用访问特定目录,可使用semanage fcontext添加策略,再用restorecon应用。
示例:允许httpd服务访问/var/www/html/custom目录:
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/custom(/.*)?"
sudo restorecon -Rv /var/www/html/custom

五、用户口令策略:防范弱密码风险

弱密码是系统安全的重大隐患,需通过以下措施强化口令安全。

1. 设置复杂口令

要求用户口令包含大写字母、小写字母、数字、特殊字符,长度≥10位。可通过passwd命令强制用户修改口令:sudo passwd -e username(强制下次登录修改)

2. 检查空口令账号

使用awk命令查找/etc/shadow文件中空口令的账户(第二字段为空),并强制设置口令:
awk -F: '($2 == "") {print $1}' /etc/shadow

3. 保护口令文件

使用chattr命令给/etc/shadow文件添加不可更改属性,防止非授权修改:
sudo chattr +i /etc/shadow(如需修改,需先取消属性:sudo chattr -i /etc/shadow

以上步骤覆盖了CentOS Stream 8用户权限管理的核心场景,遵循最小权限原则(仅授予必要权限),可有效提升系统安全性。操作前建议备份重要数据,避免误操作导致系统故障。

0