如何使路径世界可读?

kjo*_*kjo 2 filesystems permissions chmod

要使某些项目 X 世界可读,仅对其拥有正确的权限是不够的:通向它的绝对路径的每个组件也必须具有正确的权限。(我的理解,如果我错了,请纠正我,是 X 本身必须设置其全局可读 (4) 位,并且其路径中的每个目录组件都必须设置其全局可执行 (1) 位。)最简单的方法来做到这一点?

FWIW,我最好的猜测是:

function _mkwr {
    chmod o+x $1 || return 0
    parent=$( dirname $1 )
    if [[ $parent = $1 ]]; then return 0; fi
    _mkwr $parent
}

function mkwr {
    chmod o+Xr $1
    _mkwr $( dirname $1 )
}
Run Code Online (Sandbox Code Playgroud)

von*_*and 5

你是部分正确的。在目录上,x权限表示使用该目录获取它引用的对象的权限。在r需要正确读取目录,也就是列表中的对象的名称引用它(注意,如果你的权限r--,你可以列出的名称,但不能访问的对象;如果是--x可以访问的对象,只要您可以给出正确的名称,但不能列出它们)。该w许可手段来修改目录,也就是重命名引用的对象,删除引用,或添加新的。同样,这完全独立于其他权限。

另一方面是有 3 组权限,分别是usergroup其他人(有时称为ugo)。用户位集是针对文件所有者的,该组针对属于文件组的用户。检查权限时,如果尝试访问的用户是文件的所有者,则应用用户权限。如果用户不是文件的所有者,但属于文件的组,则组权限适用。仅当上述情况均不适用时,才会检查其他权限。

请注意,由于权限位是完全独立的,因此上面的意思是可以有所有者和组都没有访问权限的文件,但其他人拥有完全权限。有点奇怪,但一致且简单。