在同一台机器上的用户之间通过子目录动态共享文件/文件夹

在同一台机器上的用户之间通过子目录动态共享文件/文件夹

我的 Linux 系统上有 3000 多个本地用户。我想动态设置文件夹或文件的权限。我在研究这个主题时遇到了 ACL(访问控制列表)。所有用户的主页位置都必须对其他用户隐藏。但是,如果我想为用户主页子文件夹中的某些文件或文件夹授予权限,我该怎么办?

其实我想说的是:

在此处输入图片描述

当我阻止 /user1 访问 /user2 目录时,我无法从 user1 访问 user2 的子目录。我该如何解决这个问题?

我看了这里虽然这和我的问题不完全相似。我不希望用户看到彼此的目录。

我的救命恩人在哪里?

答案1

是的,文件 ACL 可以做到这一点。您需要的是授予遍历 ( x) 权限,而不是读取 ( r) 权限。对于目录:

  • Traverse 允许用户沿目录树遍历目录节点。用命令术语来说,它允许他们运行cd directory
  • Read 允许用户读取目录的内容。用命令术语来说,它允许用户运行ls directory

因此对于图表中的用户 1:

# Allow user1 to cd /home/user2/folder/subfolder/subfolder:
setfacl -R -m u:user1:x /home/user2/folder/subfolder/subfolder
# Allow user1 to ls /home/user2/folder/subfolder/subfolder:
setfacl    -m u:user1:r /home/user2/folder/subfolder/subfolder

注意:

  • 在第一个命令中,您需要-R(recursive) 标志,因为您需要设置x所有父目录的权限。如果没有该标志,即使您授予 user1 读取权限,他们也无法访问叶目录并读取它。
  • 在第二个命令中想要-R,因为您只想授予叶目录的读取权限,而不是其任何父目录的读取权限。

理解 Linux 目录权限推理

相关内容