chmod是否按指定的顺序修改FILE ...参数的权限?

时间:2017-05-10 11:21:34

标签: unix posix

给定chmod调用多个FILE参数,

$ chmod 0xxx FILE-1 FILE-2 FILE-3 ...

是否存在可预测的顺序?当FILE-kFILE-j相关时,这可能很重要,例如当一个是另一个的子目录时。比如,FILE-1是某个目录d1FILE-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 是否会以某种方式影响推理?

1 个答案:

答案 0 :(得分:0)

虽然未指定,但所有实现都像您经历的那样自然,但无法保证,请注意POSIX( IEEE Std 1003.1-2008,2016 Edition )在{ {1}}命令手册 - 应用程序使用

  

chmod实用程序的某些实现改变了a的模式   执行a时目录中的文件之前的目录   递归(-R选项)更改;其他人改变了目录模式   目录中的文件。如果应用程序试图删除读取或   对文件层次结构的搜索权限,如果删除尝试失败   目录先改变;另一方面,尝试重新启用   如果更改目录,则限制层次结构的权限将失败   持续。用户不应尝试使层次结构不可访问   自己。

因此,可以应用参数上的任何顺序,您需要使用单独的命令来确保顺序。