📅  最后修改于: 2023-12-03 14:43:57.760000             🧑  作者: Mango
在 Linux 系统中,root
用户默认拥有系统中任何文件和目录的完全访问权限。然而,有些情况下我们需要在不完全移除 root
用户的情况下限制其访问某些敏感文件和目录。以下是如何删除 root
访问权限的方法。
ACL
(Access Control List),访问控制列表是一种更加细粒度的访问控制方式。ACL
允许我们为特定的文件或目录分配不同的权限,这比使用用户组或者其他方式更加灵活。
确保你的 Linux 系统支持 ACL
。要检查,请运行命令 getfacl --version
。如果你能够看到版本号,则意味着你的系统支持 ACL
。
使用 chmod
命令为文件或目录分配 ACL
,例如,以下命令会将 /var/www
目录分配给 webuser
用户和 admin
组用户:
setfacl -R -m u:webuser:rwx,g:admin:rwx /var/www
上述命令中的 -R
参数表示递归地为该目录下的所有文件和子目录分配权限。-m
参数表示修改现有的 ACL
。u
参数表示用户,g
参数表示组,r
、w
、x
分别表示读、写、执行权限。
检查 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
删除 root
用户的权限,使用以下命令删除 /var/www
目录下所有文件和子目录的 root
用户的权限:
setfacl -R -x u:root /var/www
以上命令中的 -x
参数表示删除 ACL
中指定的用户或组的权限。
另一种简单的方法是使用用户组限制 root
用户的访问权限。以下是如何实现此方法的步骤:
创建一个新的组,例如 admin2
:
sudo groupadd admin2
将 root
用户添加到 admin2
组:
sudo usermod -aG admin2 root
设置 /var/www
目录的权限为 770
,其中 7
表示 rwx
权限,0
表示 no
:
sudo chmod 770 /var/www
在 /var/www
目录中创建一个新文件夹 example
,并将其所有权移交至 webuser
用户和 admin
组:
mkdir /var/www/example
sudo chown webuser:admin /var/www/example
确保 root
用户被从 admin
组中删除:
sudo gpasswd -d root admin
现在,除非 root
用户再次被加入 admin
组,否则其无法访问 /var/www/example
。
无论是使用 ACL
还是使用用户组管理,我们都可以方便地限制 root
用户对系统中的文件和目录的访问权限。这使得在需要限制 root
用户的访问权限时能提供更好的粒度和更高的灵活性。