如何检查主目录中是否有“其他”权限

如何检查主目录中是否有“其他”权限

现在,我有一个每天运行的脚本,chmod 是主目录,从目录中删除所有“其他”权限和“组”写入权限。见下文。

#Removing all other permissions on all home directories and write from group

ls /home | sed 's/ //g' |
while read i; do
  chmod -R o-rwx /home/$i
  chmod -R g-w /home/$i
done

这很好用;但是,我更希望脚本检查是否有任何需要更改的文件,然后对它们采取行动,而不是每次都这样做,无论是否需要它。

我假设我可以将整个事情放入语句内的子函数中if,但我不知道我将在该if语句内运行什么测试。

如何测试目录是否需要更改?

答案1

使用查找:

find /home/* -type d -maxdepth 0 -perm /g+w,o+rwx -exec chmod g-w,o-rwx '{}' +

如果您想执行此递归操作(如-R示例中所使用的那样),请使用此

find /home/* -perm /g+w,o+rwx -exec chmod g-w,o-rwx '{}' +

编辑:

find选项简要说明,详情参见man find

-perm一起/mode意味着设置任何位。

经典-exec语法是-exec command '{}' ';'.这些字符{}被文件名替换,引号是为了保护它们免受 shell 的影响,在大多数 shell 上,这不是必需的,但也没有什么坏处。是';'命令的结尾,对于大多数 shell 来说,这里引用是必需的,但另一种形式是\;。缺点是每个更改的文件都会调用一次 chmod。使用命令以 终止的替代形式可以避免这种情况+。这种形式以多种名称调用 exec,其效果与 类似xargs,甚至节省了调用 的开销xargs

相关内容