![使用 sudo 限制对目录的访问](https://linux22.com/image/1465028/%E4%BD%BF%E7%94%A8%20sudo%20%E9%99%90%E5%88%B6%E5%AF%B9%E7%9B%AE%E5%BD%95%E7%9A%84%E8%AE%BF%E9%97%AE.png)
如果我有一个文件夹/var/secret/
并授予用户访问该sudo
命令的权限,有没有办法允许他们完全访问其他地方,但是/var/secret/
却完全不授予他们访问该命令的权限?
答案1
这几乎(但理论上)是不可能的。一旦用户拥有不受严格限制的 sudo 访问权限,他们就拥有 root 访问权限 - 例如,运行 sudo /bin/bash 将创建一个具有 root 权限的 bash shell,并且能够绕过 root 设置的任何机制。
理论上的方法是制定 sudo 规则,允许用户做任何他们想要/需要的事情,除了执行可以访问该资源的所有命令的能力——这在实践中几乎肯定是不可能的。
您也可以使用 SELinux 或 Apparmour 来限制访问目录的能力 - 但同样,具有 root 权限的人可以撤消此功能。
您可以通过保持加密并安装加密卷来阻止对指定资源的访问 - 我认为这不会阻止访问,但会阻止随意访问。[我注意到,当我使用 FUSE 以用户身份远程安装文件系统时,只有安装文件系统的用户才能访问它。当然,因为我是 root,所以我可以简单地 SU 返回该用户并查看文件 - 毫无疑问还有其他方法可以做到这一点] 此外,如果用户具有 root 访问权限时未安装资源,并且密钥未存储在内存中,他们也无法获取它。