Answers:
更好的解决方案应该是
chmod -R ug=rwX,o=rX /path
大写字母的X
意思是:如果设置执行位
该文件是目录或已经具有某些用户的执行权限
(引自chmod
手册页)。
或者,如果您想使用 find
find /path \( -type f -exec chmod ug=rw,o=r {} + \) -o \
\( -type d -exec chmod ug=rwx,o=rx {} + \)
find
将所有文件权限设置为600,将所有目录权限设置为700。(我是通过对主题的谷歌搜索到达的。)如果可以使用单个chmod -R
命令来完成,请随时进行纠正。
chmod -R u=rwX,go= /path
几乎可以满足您的要求:它将所有目录设置为700,将所有文件设置为600或700,这取决于执行位是否已设置,我认为这是正确的选择。
find
您编写的命令作为模板非常有用。:)
使用find是“正确”的方法,也是唯一的编程方法,尽管存在一些变化:
find . -type f -exec chmod ug+rw {} + # "+" may not be on all systems
要么
find . -type f -print0 | xargs -r0 chmod ug+rw # similar to the -exec + functionality
或最慢的:
find . -type f -exec chmod ug+rw {} \; # in case xargs is not installed
这些选项中的每一个都会选择一个文件(不是目录,不是符号链接)并chmod
在其上应用命令。前两个chmod
通过每次将文件附加到内部命令行的末尾直到达到最大值(通常为10个)来减少对调用的次数,然后调用该命令并开始重新构建新命令。最后一条语句为每个文件生成一个新进程,因此效率较低。