📌  相关文章
📜  linux 删除 root 访问权限 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:43:57.760000             🧑  作者: Mango

Linux 删除 Root 访问权限 - Shell-Bash

在 Linux 系统中,root 用户默认拥有系统中任何文件和目录的完全访问权限。然而,有些情况下我们需要在不完全移除 root 用户的情况下限制其访问某些敏感文件和目录。以下是如何删除 root 访问权限的方法。

使用ACL管理

ACL(Access Control List),访问控制列表是一种更加细粒度的访问控制方式。ACL 允许我们为特定的文件或目录分配不同的权限,这比使用用户组或者其他方式更加灵活。

步骤
  1. 确保你的 Linux 系统支持 ACL。要检查,请运行命令 getfacl --version。如果你能够看到版本号,则意味着你的系统支持 ACL

  2. 使用 chmod 命令为文件或目录分配 ACL,例如,以下命令会将 /var/www 目录分配给 webuser 用户和 admin 组用户:

    setfacl -R -m u:webuser:rwx,g:admin:rwx /var/www
    

    上述命令中的 -R 参数表示递归地为该目录下的所有文件和子目录分配权限。-m 参数表示修改现有的 ACLu 参数表示用户,g 参数表示组,rwx 分别表示读、写、执行权限。

  3. 检查 ACL 是否已设置,使用以下命令检查已经为文件或目录设置的 ACL

    getfacl /var/www
    

    如果命令返回以下内容,则表示 ACL 已设置成功:

    # file: var/www
    # owner: root
    # group: root
    user::rwx
    user:webuser:rwx          #effective:rwx
    group::r-x
    group:admin:rwx           #effective:rwx
    mask::rwx
    other::r-x
    
  4. 删除 root 用户的权限,使用以下命令删除 /var/www 目录下所有文件和子目录的 root 用户的权限:

    setfacl -R -x u:root /var/www
    

    以上命令中的 -x 参数表示删除 ACL 中指定的用户或组的权限。

使用用户组限制 root 访问

另一种简单的方法是使用用户组限制 root 用户的访问权限。以下是如何实现此方法的步骤:

步骤
  1. 创建一个新的组,例如 admin2

    sudo groupadd admin2
    
  2. root 用户添加到 admin2 组:

    sudo usermod -aG admin2 root
    
  3. 设置 /var/www 目录的权限为 770,其中 7 表示 rwx 权限,0 表示 no

    sudo chmod 770 /var/www
    
  4. /var/www 目录中创建一个新文件夹 example,并将其所有权移交至 webuser 用户和 admin 组:

    mkdir /var/www/example
    sudo chown webuser:admin /var/www/example
    
  5. 确保 root 用户被从 admin 组中删除:

    sudo gpasswd -d root admin
    

现在,除非 root 用户再次被加入 admin 组,否则其无法访问 /var/www/example

结论

无论是使用 ACL 还是使用用户组管理,我们都可以方便地限制 root 用户对系统中的文件和目录的访问权限。这使得在需要限制 root 用户的访问权限时能提供更好的粒度和更高的灵活性。