通过查找特定文件更改权限

通过查找特定文件更改权限

假设我有一个名为 Permissions 的目录,其中包含多个具有不同访问权限的文件。

我想要做的是,如果一个文件具有others类别的访问权限,我想为该group类别授予相同的访问权限。

示例1:如果 file_1 有r-x---r--,那么我希望该文件具有权限r-xr--r--

示例2:

file_2有r-xr----x权限,我希望它变成r-xr-x--x

示例3:

file_3和file_4分别具有rw---x---rwxr-----访问权限,这些文件应保持不变

我知道find我可以搜索此类文件然后-perm 0740更改其值,但是如何仅搜索具有与权限不同的权限-exec chomd --- \;的文件,并在找到时更改其 访问权限以匹配权限othergroupgroupother

答案1

chmod可以自己做到这一点:

chmod -R g+o dir

字母组合ugoa控制哪些用户对文件的访问权限将被更改:[...] 文件组中的其他用户 (g)、[...]

运算符 + 使选定的文件模式位添加到每个文件的现有文件模式位 [...]

这些字母rwxXst为受影响的用户选择文件模式位 [...] 您可以指定以下字母之一,而不是这些字母中的一个或多个ugo:[...] 以及授予不在这两个字母中的用户的权限前面两个类别 (o)。

答案2

使用 GNUfind和循环,您可以搜索r w x未为 设定group但为 设定的每个权限others并将其设置为group

for perm in r w x; do
  find . -type f \! -perm /g+"$perm" -perm /o+"$perm" -exec chmod g+"$perm" {} \;
done

相关内容