Chmod 文件以递归方式授予组与用户相同的权限

Chmod 文件以递归方式授予组与用户相同的权限

是否有一个 unix 命令可以针对目录树逐个文件递归地为组授予与用户当前相同的权限?即,如果文件是用户可写的,则它应该变为组可写的,否则它不应该是组可写的,依此类推。

答案1

感谢 jamessan 向我们展示了 g=u。在我的系统上,这似乎有效:

chmod -R g=u dir

答案2

find dir -type f -exec chmod g=u '{}' \+

答案3

我想不出用现有命令来做到这一点的简单方法。也许像这样的脚本会有所帮助:

#!/bin/bash

DIR="$1"

find "$DIR" -ls | while read a b perm c d e f g h i file; do
   uperm=${perm:1:3}
   uperm=$(echo "$uperm" | tr -d '-')
   chmod g=$uperm "$file"
done

另外,请记住,某些用户的权限可能不适用于群组,反之亦然。

答案4

我不知道这样的命令是否存在,但利用 find 并调用它几次,你就可以实现
你想要做的事情,例如

例如:
% find . -type f -perm -u+w -and ! -perm -g+w -exec chmod g+w {} \;

上述命令遍历当前目录“。”,查找所有具有
但没有用户权限 组的权限并将其权限更改为组可写。

类似地,您可以使用上述调用来更改文件权限执行 模式。

相关内容