![根据用户权限设置权限](https://linux22.com/image/117539/%E6%A0%B9%E6%8D%AE%E7%94%A8%E6%88%B7%E6%9D%83%E9%99%90%E8%AE%BE%E7%BD%AE%E6%9D%83%E9%99%90.png)
由于我的系统上的默认 umask 设置,文件权限始终默认为组和其他人无访问权限。这通常很好,但当我安装需要其他人访问的软件时,这很烦人。有没有一种快速方法可以在安装后根据使用权限重置树中所有文件和文件夹的权限。
基本上复制用户,除了写入。
rwx------ to rwxr-xr-x
rw------- to rw-r--r--
答案1
您可以使用find
以下方法来执行此操作:
find <dirpath> -perm 700 -type d -exec chmod 755 {} \; ## For directories
find <dirpath> -perm 600 -type f -exec chmod 644 {} \; ## For files
答案2
你可以这样做:
find . ! -type l -print0 |
perl -0 -lne '
$m = (lstat$_)[2] & 07777;
$u = ($m >> 6) & 5;
chmod $m | $u | ($u<<3), $_'
也就是获取用户权限,去掉写位 ( & 5
) 和或者那个到团体和其他权限。
答案3
假设您是一个行为良好的 UNIX 用户并且文件名中没有空格:
for file in $(find . -type f -o -type d)
do \
user_perm=$(stat -c %a $file |cut -c1)
other_perm=$(($user_perm&5))
chmod $user_perm$other_perm$other_perm $file
done