当使用chmod
(在我的情况下是coreutils
8.12 的一部分)并递归设置x
位时,存在方便的X
(大写字母 x),仅在目录上设置位。因此,如果您想x
从所有文件中删除并且只将其保留在文件夹中,您可以将其压缩到这样的单个调用中:
chmod -R a-x,a+X /path/to/folder
Run Code Online (Sandbox Code Playgroud)
如果您与 unixoid 系统的概念起源于 1980 年代并且755
他们只知道八进制的人一起工作,这将特别有用。
然而,我还没有发现这样的事情s
,尽管事实上在文件和文件夹上存在类似的比特含义的二元性。我指的是chmod(1)
,特别是setgid
行为。所以如果我这样做:
chmod -R g+ws /path/to/folder
Run Code Online (Sandbox Code Playgroud)
我最终得到的文件和文件夹都设置了该位,而我只想将它设置在文件夹上,以便在那里创建的文件始终由拥有组自动拥有。
有没有方便的方法,缺少:
find /path/to/folder -type d -exec chmod g+s {} \;
Run Code Online (Sandbox Code Playgroud)
???
当您使用-R
开关 to时chmod
,您是说您希望将相关权限更改递归地应用于文件和文件夹。
没有办法告诉chmod
您只将这些设置应用于其中一个,因此您唯一的办法就是寻求工具的帮助,例如find
构建目录列表,然后有选择地针对此列表执行命令exec
。chmod
chmod
您可以通过exec
像这样使用命令+
的变体来调用它来提高效率exec
:
$ find /path/to/folder -type d -exec chmod g+s {} +
Run Code Online (Sandbox Code Playgroud)