给定具有多个文件参数的chmod调用,
$ 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的权限,因此chmod没有获得对d1/d2的访问权限。因此,下面的调用也按预期工作:
$ chmod 0000 d1/d2 d1这将清除任意目录的权限。但是,这种秩序依赖性是否得到保证,更普遍地说,POSIX是否对这一问题有所说明?关于Unix系统的可预测性,选项-R是否以某种方式影响推理?
发布于 2017-05-10 15:01:57
虽然没有指定,但所有的实现都像您所经历的那样自然运行,但是没有保证,注意POSIX (IEEE 1003.1-2008,2016Edition)在chmod命令手册-应用程序使用中说。
当执行递归(-R )选项时,chmod实用程序的某些实现会更改目录中文件之前的目录模式;另一些实现会在目录中的文件之后更改目录模式。如果应用程序试图删除文件层次结构的读权限或搜索权限,如果先更改目录,则删除尝试失败;另一方面,如果目录最后更改,尝试重新启用对受限制层次结构的权限将失败。用户不应试图使自己无法访问层次结构。
因此,参数上的任何顺序都可以应用,您需要使用单独的命令来确保顺序。
发布于 2017-05-10 15:53:59
它似乎在任何地方都没有具体说明。
但是,CHMOD手册页的应用程序使用部分确实指定了命令的递归行为。
经过几次实验,我在运行Ubuntu14.04.5LTS的x86_64 GNU/Linux上获得了与您相同的结果。
它似乎计算出了从左到右的权限,并在不能更改权限时停止。
https://stackoverflow.com/questions/43890999
复制相似问题