我们在其中一台文件服务器上安装了 Rsync 服务器,并将每晚的备份从该服务器拉到一台基于 Linux 的机器上,该机器负责归档和备份轮换工作。
最近我注意到 Rsync 用户无法访问服务器上的某些文件。该服务以本地用户的身份运行,该用户属于备份操作员组。我原以为这个组中的任何人都可以完全访问所有内容,但最近的结果告诉我事实并非如此。
有没有办法绕过这个问题来获得 rsync 的完全访问权限?更改文件所有权不是一种选择。除非可以对所有文件执行此操作,否则添加权限是一种选择没有影响其他现有权限。
答案1
您对“备份操作员”如何与 NTFS 权限交互的理解存在缺陷。“备份操作员”组的成员能读/写绕过权限,但只能通过特定的备份 API 函数rsync 没有使用。
Rsync 使用“常规”文件系统 API 函数,因此以 rsync 身份运行的用户必须有权读取您要备份的每个文件。如果不更改 rsync 中的代码,就无法解决这个问题。
根据您构建权限层次结构的方式,您可能能够为 rsync 用户(理想情况下,rsync 用户所属的组(可能是唯一成员,而不是用户))的权限添加另一个 ACE,以读取文件。如果您阻止了权限继承(微软似乎并没有因为这种原因而强烈阻止这种继承),那么您就会陷入困境,并且您必须在层次结构中的每个权限继承根授予该权限。
如果您现有的权限层次结构已经包含合适的组(例如“管理员”),则可以采取诱人的捷径,将 rsync 用户添加到“管理员”组。显然,rsync 中的错误允许非特权用户在 rsync 用户的上下文中执行代码,在这种情况下会非常非常糟糕,因此请仔细权衡风险。