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


16

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

chmod 

Answers:


25

感谢Jamesessan向我们展示g = u。在我的系统上,这似乎可行:

chmod -R g=u dir

1
这也会更改目录的权限。原始问题指定了文件。
jamessan

@jamessan,这是目录。
Mike Graham

@Mike,仅仅是因为* nix允许您将几乎所有内容都视为文件,并不意味着目录实际上是文件。即使承认它们是相同的,在更改目录树中所有文件的权限与更改目录树中所有文件和目录的权限之间也存在明显的功能差异。
jamessan 2011年

再一次有直接的解决方案来解决我的问题。为什么我不感到惊讶?
rzetterberg


0

我想不出一种简单的方法来执行现有命令。也许这样的脚本会有所帮助:

#!/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

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


0

我不知道这样的命令是否存在,但是使用find和调用它几次,就可以实现
您要尝试的操作,例如

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

上面的命令遍历当前目录“。”,查找 对用户具有许可权
但 对组没有许可权的所有文件,并将那里的许可权更改为组可写。

同样,您可以使用上面的变体调用来更改 组的读取执行模式的文件权限。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.