是否可以用八进制值表示 +X 符号权限? chmod(1) 手册页显示:
仅当文件是目录或已具有某些用户的执行权限时才执行/搜索
这意味着chmod -R g+X
仅当已经为用户、组或其他设置了执行位时才会添加组执行权限。你当然可以用 find 来做到这一点:
find . -perm /ugo=x -exec chmod g+x {} \;
然而,如何在不使用八进制模式的情况下完成同样的事情并不明显寻找或者测试首先检查文件权限。这是否可能,或者是否存在符号和八进制权限不重叠的某些区域?
答案1
简短的故事:这是不可能的,不。
更长的故事:八进制权限是状态。该[+-][rwxXst]
符号代表了operations
状态变化的最终结果。注意,不是那个=[rwxXst]
,套状态并且相当于吉尔斯所说的八进制模式。其中X
一个是唯一有条件的操作,其他都是无条件的。
当您的chmod
文件具有八进制权限时,您提供最终的状态逐字许可位。当你使用操作时,你选择你想要的完毕到权限位。
你的问题相当于问是否有一个数字可以代表所有的平方根。答案显然是否定的:每个平方根产量一个数字(学究:虽然它可能是虚数/无理数),但没有开头状态(数字),你无法分辨是哪个。
答案2
符号模式比八进制模式更具表现力,因为八进制模式只能表达绝对变化。相对变化,不仅意味着+X
任何不指定所有新位的模式(例如g+x
— 甚至a+rwx
,不删除任何 setuid/setgid 位)都不能用八进制模式表示。
相反,任何八进制模式都可以表示为符号模式,通常通过使用=
,例如4750
= u+rwxs,g=rx,o-rwxt
(或u=rwxs,g=rx,o=
或许多其他组合)。