我使用umask -S
的umask 0002返回u=rwx,g=rwx,o=rx.
如何找到现在根据掩码设置权限的所有文件和目录?
目录为777 - mask
,文件为666 - mask
如果我执行类似
find . ! -perm $(umask -S)
它会找到没有权限设置为u = rwx,g = rwx,o = rx(777 - 002有权利但666 - 002是不同权限)的所有文件/目录,这对目录有好处,但是不是为了文件。
如何查找与当前设置umask具有不同权限的文件?
例如
touch one
ls -l
-rw-rw-r-- 1 trolkura trolkura 0 kvě 4 09:01 one
umask是0002所以这导致664,但是当我做
时find . -type f ! -perm $(umask -S)
./one
结果是新创建的文件bcs它正在查找没有775权限的文件(目录权限)
答案 0 :(得分:1)
这是我的版本:
m=`umask`
fperm=`printf '0%o' $(( 0666 & ~$m ))`
dperm=`printf '0%o' $(( 0777 & ~$m ))`
find -type f -perm $fperm -o -type d -perm $dperm
答案 1 :(得分:0)
find . -type f ! -perm $(echo "obase=8;$(( 8#666 ^ 8#$(umask) ))"|bc)
这是对八进制数的二进制xor运算。由于-perm
接受八进制权限,十进制结果再次转换为八进制。
答案 2 :(得分:0)
最糟糕的解决方案是根据umask
...
如果你的umask u=rwx,g=rwx,o=rx
是你可以找到像这样的邪恶666的文件:
find . -type f ! -perm u=rw,g=rw,o=r
如果你的umask u=rwx,g=rx,o=rx
,那么你使用另一个字符串......
find . -type f ! -perm u=rw,g=r,o=r
......并不以那个为荣。