Gil*_*il' 12
假设“sudoers”是指允许以 root 身份运行带有sudo前缀的命令的人,因为他们在sudoers文件中通过类似的行提到bob ALL=(ALL) ALL,那么这些人就是root。定义为 root 的不是知道 root 帐户的密码,而是可以通过任何方式访问 root 帐户。
您无法从 root 保护您的数据。根据定义,root 用户可以做任何事情。权限无济于事,因为 root 可以更改或绕过权限。加密无济于事,因为 root 可以破坏进行解密的程序。
如果您不信任某人,请不要在您存储数据的机器上授予他们 root 访问权限。如果您不信任在机器上拥有 root 访问权限的人,请不要在其上存储您的数据。
如果用户出于某些特定目的需要 root 访问权限,例如轻松管理应用程序、安装软件包等,则为他们提供自己的硬件,或者为他们提供自己的虚拟机。让他们在 VM 中成为 root,但不在主机上。
通常sudo以这种方式授予访问权限:
# User privilege specification
root ALL=(ALL) ALL
user1 ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
在这种情况下,用户基本上可以不受限制地成为 root 并做任何他们想做的事情。您可以通过以下方式更明智地授予对 sudo 中各种任务的访问权限:
user1 ALL=(root) /usr/bin/find, /bin/rm
Run Code Online (Sandbox Code Playgroud)
在这里,我们将 user1 可以使用的命令限制为find和rm。如果您知道用户只需要一个特定的命令,您可以授予他们独占访问该命令的权限。
此外,您还可以创建脚本,而不仅仅是添加命令。例如:
user1 ALL=(root) /usr/local/bin/limited_script.sh
Run Code Online (Sandbox Code Playgroud)
此脚本将是他们有权访问的唯一命令,例如,您可以cd /to/some/dir在之前的脚本中,然后包装他们需要访问的任何命令。这可能是限制他们访问的一种方式。
意识到该方法不是完全证明,但可以为您提供一定程度的保护。