服务器: 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
可以将软链接从那里放置到新位置。