我需要创建一种“备份操作员”帐户,该帐户可以读取系统上的所有文件以复制到备份系统,而无需修改任何文件,包括属于root
.
该root
帐户似乎是唯一能够做到这一点的帐户,但是该root
帐户并没有被阻止运行它想要的任何东西。我能想到的另一个选择是将帐户放在具有读取权限的组中,并使该帐户成为每个用户组的成员。Linux 中的基本rwx
权限似乎并不是为此而创建的。
Linux 是否有更复杂的功能来实现这一目的,例如 ACL 可能提供的功能?
该权限适用于从远程备份服务器登录并将所有文件备份到远程服务器的用户。如果备份服务器受到威胁,该帐户应该无法登录到正在备份的服务器并造成一些损害。备份服务器上的帐户也不应该能够登录到备份服务器,并且如果受到损害会造成一些损害。
我想通常情况下,人们只需以 root 身份运行备份实用程序,通过
cron
或通过 SSH 密钥上的强制命令,然后相信该实用程序不会做任何危险的事情。使用 ACL 为系统上的所有文件授予权限会有点尴尬,因为您需要为每个文件单独设置 ACL(因为 POSIX ACL 并没有授予对子树的访问权限的概念,您只有默认 ACL 会自动复制到新文件中)。这些文件的所有者可以随意或故意删除这些权限。安全意识强的程序(如 SSH 或 GPG)如果注意到您的文件可以被其他人读取,也可能会生气。(他们甚至不需要知道 ACL 就可以做到这一点,因为传统的权限位掩盖了 ACL 授予的权限,因此 ACL 授予的任何访问权限在传统的权限位中都很明显。)
不过,其实是有办法的。Linux功能系统包含一个功能:
(我不确定最后一个与其他的有什么关系,但我会忽略它......)
如果您有一个特定的实用程序想要拥有该功能,您可以通过以下方式将其提供给它
setcap
:虽然现在,任何可以运行二进制文件的人都可以
/path/to/backupcmd
使用该功能。因此,您可能希望保护该特定文件不被任意用户访问。例如,使其由 拥有root:backup
,具有权限,应该能够运行它的用户组rwx--x---
在哪里。backup
您正在寻找 sudo
sudo 是一个用于类 Unix 计算机操作系统的程序,它允许用户以其他用户的安全权限运行程序