我正在寻找一种方法来仅访问 z/OS UNIX 主目录中的某些子目录。有什么办法可以做到这一点吗?目前主目录权限设置为700,因此,我无法访问主目录内的任何子目录。但是在主目录上设置 777 访问权限将允许所有用户访问主目录内的所有子目录。但我的项目只需要访问主目录中的一个子目录。 z/OS UNIX中有没有什么方法或解决方案可以实现这个需求?
答案1
如果你对顶级目录设置了权限777
,则意味着所有用户都可以在该目录中创建和删除对象。你可能不想要这样。仅有的755
:rwxr-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
如果您是和的所有者child1
,child2
那么您将拥有对所有内容的完全访问权限,否则您将无法访问任何内容。
chmod go+rx parent # Add read,execute/search permission
这将授予组和其他人访问该parent
目录的权限,但无权从中添加或删除文件/目录。因此,这些人将能够看到file1
两个目录child1
,child2
.现在每个人都可以file1
凭借其权限读取该文件,但只有所有者才能修改它。每个人都可以看到目录名称child1
和child2
,但只有所有者才能列出其内容。
没有什么可以阻止所有者让parent
您成为新组的唯一其他成员,并授予您对必要的目录的组权限,parent
以便child1
您可以访问它们。您仍然无法访问其他child2
目录,并且通过限制其权限file1
可以安排您也无法访问该文件。
答案3
首先,权限 700 完全阻止其他用户访问目录中的任何内容,包括其子目录。如果你想实现这一目标(你不应该这样做),你将不得不以迂回的方式做到这一点。
您没有提到您正在使用哪个文件系统,但我让它在 btrfs 文件系统上工作,其他文件系统也支持类似的功能。
我从只包含私人内容的文件夹 A 开始
以下是我随后采取的步骤:
- 为共享内容创建一个子卷:
btrfs subvolume create /.../A/B
- 填充子卷:
touch A/B/private
- 新建文件夹C供用户访问:
mkdir C
- 在 C 上挂载 A/B:
mount -o subvol=../A/B /dev/sdXX C
其中/dev/sdXX
是 fs 卷所在的块设备的路径 - 设置A的权限:
chmod 700 A
- 设置A/B的权限:
chmod 777 A/B
新的布局是:
.
├── A
│ ├── B
│ │ └── public
│ └── private
└── C
└── public
任何用户都可以通过C访问A/B,但除了A的所有者之外,没有人可以以任何方式访问它