访问主目录中的选择性子目录

访问主目录中的选择性子目录

我正在寻找一种方法来仅访问 z/OS UNIX 主目录中的某些子目录。有什么办法可以做到这一点吗?目前主目录权限设置为700,因此,我无法访问主目录内的任何子目录。但是在主目录上设置 777 访问权限将允许所有用户访问主目录内的所有子目录。但我的项目只需要访问主目录中的一个子目录。 z/OS UNIX中有没有什么方法或解决方案可以实现这个需求?

答案1

如果你对顶级目录设置了权限777,则意味着所有用户都可以在该目录中创建和删除对象。你可能不想要这样。仅有的755rwxr-xr-x。所有者可写,其他人可读和可搜索。接下来,对各个子目录的访问进行权限控制。如果您创建700除团队可访问的目录之外的所有子目录,那么这将起作用。755如果您希望每个人都能够读取和搜索该目录,但不能创建或删除其中的文件和子目录,请制作该目录。然后目录中的各个文件权限决定谁可以访问哪些文件内容。

答案2

目录的权限定义0700是用户/所有者具有读、写、执行/搜索访问权限,但组和其他人没有访问权限。时期。如果您不是所有者并且想要访问此顶级目录中的目录,则需要至少执行/搜索权限。此父目录中的子目录和文件拥有自己的权限,因此您可以访问一个目录(可能还包括其内容),而无法看到除其他文件和目录名称以外的任何内容。

考虑:

umask 0022
mkdir -m700 parent parent/child1 parent/child2
touch parent/file1 parent/child1/file11 parent/child2/file21
tree

.
└── parent            # rwx------
    ├── child1        # rwx------
    │   └── file11    # rw-r--r--
    ├── child2        # rwx------
    │   └── file21    # rw-r--r--
    └── file1         # rw-r--r--

parent如果您是和的所有者child1child2那么您将拥有对所有内容的完全访问权限,否则您将无法访问任何内容。

chmod go+rx parent    # Add read,execute/search permission

这将授予组和其他人访问该parent目录的权限,但无权从中添加或删除文件/目录。因此,这些人将能够看到file1两个目录child1child2.现在每个人都可以file1凭借其权限读取该文件,但只有所有者才能修改它。每个人都可以看到目录名称child1child2,但只有所有者才能列出其内容。

没有什么可以阻止所有者让parent您成为新组的唯一其他成员,并授予您对必要的目录的组权限,parent以便child1您可以访问它们。您仍然无法访问其他child2目录,并且通过限制其权限file1可以安排您也无法访问该文件。

答案3

首先,权限 700 完全阻止其他用户访问目录中的任何内容,包括其子目录。如果你想实现这一目标(你不应该这样做),你将不得不以迂回的方式做到这一点。

您没有提到您正在使用哪个文件系统,但我让它在 btrfs 文件系统上工作,其他文件系统也支持类似的功能。

我从只包含私人内容的文件夹 A 开始

以下是我随后采取的步骤:

  1. 为共享内容创建一个子卷:btrfs subvolume create /.../A/B
  2. 填充子卷:touch A/B/private
  3. 新建文件夹C供用户访问:mkdir C
  4. 在 C 上挂载 A/B:mount -o subvol=../A/B /dev/sdXX C其中/dev/sdXX是 fs 卷所在的块设备的路径
  5. 设置A的权限:chmod 700 A
  6. 设置A/B的权限:chmod 777 A/B

新的布局是:

.
├── A
│   ├── B
│   │   └── public
│   └── private
└── C
    └── public

任何用户都可以通过C访问A/B,但除了A的所有者之外,没有人可以以任何方式访问它

相关内容