给定chmod
调用多个FILE参数,
$ chmod 0xxx FILE-1 FILE-2 FILE-3 ...
是否存在可预测的顺序?当FILE-k
和FILE-j
相关时,这可能很重要,例如当一个是另一个的子目录时。比如,FILE-1
是某个目录d1
和FILE-2
子目录d1/d2
,即第二个参数指定第一个参数的子目录:
$ chmod 0000 d1 d1/d2
chmod: cannot access `d1/d2': Permission denied
好的,这就是我的预期,即从左到右阅读反映了处理FILE...
参数的顺序,d1
的权限首先被清除,因此{{1} } connot然后获得chmod
的访问权限。因此,以下调用也可以按预期工作:
d1/d2
这将清除任一目录的权限。但这种顺序依赖性是否得到保证,更一般地说,POSIX是否对此事有所说明?对于Unix系统的可预测性,选项$ chmod 0000 d1/d2 d1
是否会以某种方式影响推理?
答案 0 :(得分:0)
虽然未指定,但所有实现都像您经历的那样自然,但无法保证,请注意POSIX( IEEE Std 1003.1-2008,2016 Edition )在{ {1}}命令手册 - 应用程序使用:
chmod实用程序的某些实现改变了a的模式 执行a时目录中的文件之前的目录 递归(-R选项)更改;其他人改变了目录模式 目录中的文件。如果应用程序试图删除读取或 对文件层次结构的搜索权限,如果删除尝试失败 目录先改变;另一方面,尝试重新启用 如果更改目录,则限制层次结构的权限将失败 持续。用户不应尝试使层次结构不可访问 自己。
因此,可以应用参数上的任何顺序,您需要使用单独的命令来确保顺序。