授予 user2 对 user1 子目录的只读权限

授予 user2 对 user1 子目录的只读权限

服务器: Debian

user1我的目录是,/home/user1/website/logs 我想为一个名为 的新用户提供user2对位于 的文件的读取权限,/home/user1/website/logs而不授予对主目录user2中其他任何内容的访问权限,并且不设置共享目录。user1

如果可能的话,如何才能实现这一点,或者这是不可能的?

编辑:此外,我需要限制 /home/user1/website/logs 中包含的所有文件的权限,以便世界永远不会对其有任何权限。它只需要可供服务器上的用户访问。

答案1

假设您具有 root 访问权限,而 user2 没有,您可以通过以下方式使用经典 UNIX 权限进行设置。您为此访问方案创建一个组(可能将 user1 和 user2 都放入其中,尽管对于访问控制,您只需要 user2 ),下面我将通过名称来引用它rdlog。建立组后,以下命令应设置您想要的内容:

chgrp rdlog /home/user1 /home/user1/website /home/user1/website/logs
chmod g=x /home/user1 /home/user1/website
chmod -R g=r /home/user1/website/logs

通过仅设置x目录权限中的位,只能使用这些目录中的精确引用。这意味着任何人都rdlog可以列出或 cd 到日志目录。并对该目录及其中的文件具有只读权限。这确实有很多限制。

首先,安全性的一部分是通过隐匿性实现的安全性。虽然您没有授予列出目录的权限/home/user1,但如果有如果他们猜出名称,则仍然可以引用其中的文件(但文件的权限随后生效)。因此,例如,他们可以输入cat /home/user1/.bashrc并根据收到的错误(没有此类文件与权限被拒绝)确定该文件是否确实存在。

第二个限制是你只能这样做一次。如果您需要授予不同的用户访问主目录下其他内容的权限,则无法执行相同的操作,因为您只能有一个组设置。

您还可以使用 ACL 做一些事情。如果你做得正确的话,这可以避免这些限制。然而,通过将有问题的目录移动到其他地方,您可以真正正确地执行权限,您实际上可能会实现您想要的目标(即让您提出这个问题的真正问题)。如果您在参考时仍然需要看到它,~/website/logs可以将软链接从那里放置到新位置。

相关内容