有人弄乱了 /usr/local/ 权限,导致其他人无法访问它。现在我想将用户权限复制到组权限,因为 chmod g+rx -R /usr/local 不安全。该怎么做?
使用linux(ubuntu 10.04)。
答案1
您可以复制权限:
chmod -R g=u /usr/local
这会将用户权限复制到组权限。
答案2
cd /usr/local
chmod -R g-rwx .
find . -perm -u+r -exec chmod g+r {} \;
find . -perm -u+w -exec chmod g+w {} \;
find . -perm -u+x -exec chmod g+x {} \;
这首先会清除所有文件的组权限。然后它应该向下搜索,依次检查每个文件的三个用户权限位(r、w、x)。对于每个权限,当它找到已设置该位的文件时(忽略其其他用户权限位),它会为该文件设置等效的组位。
我强烈建议您先在随机子目录中测试一下,最好在其中放一些您自己制作的极端文件。但在我的类似测试中,它是有效的。
答案3
我也在网上找到了这个基于 perl 的解决方案。
find . | perl -ne 'chomp; $a = (stat $_)[2] & 07777; $a = ($a & 07707) | (($a >> 3) & 070); chmod($a, $_)'
但
chmod g=u
我认为其他地方提到的更好