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)
你是部分正确的。在目录上,x
权限表示使用该目录获取它引用的对象的权限。在r
需要正确读取目录,也就是列表中的对象的名称引用它(注意,如果你的权限r--
,你可以列出的名称,但不能访问的对象;如果是--x
可以访问的对象,只要您可以给出正确的名称,但不能列出它们)。该w
许可手段来修改目录,也就是重命名引用的对象,删除引用,或添加新的。同样,这完全独立于其他权限。
另一方面是有 3 组权限,分别是user、group和其他人(有时称为ugo)。用户位集是针对文件所有者的,该组针对属于文件组的用户。检查权限时,如果尝试访问的用户是文件的所有者,则应用用户权限。如果用户不是文件的所有者,但属于文件的组,则组权限适用。仅当上述情况均不适用时,才会检查其他权限。
请注意,由于权限位是完全独立的,因此上面的意思是可以有所有者和组都没有访问权限的文件,但其他人拥有完全权限。有点奇怪,但一致且简单。