umask 值和文件目录权限的最简单的计算方法
linux中默认创建的目录的权限为755
[[email protected] data]# mkdir a
[[email protected] data]# ll
total 4
drwxr-xr-x. 2 root root 4096 Apr 23 13:09 a
linux中默认创建的文件的权限为644
[[email protected] data]# touch a.txt
[[email protected] data]# ll
total 4
-rw-r--r--. 1 root root 0 Apr 23 13:11 a.txt
cent os 6.5中umask的值为0022
但是有个前提:在/etc/profile里有一句话:
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
所以我的用户root,他的默认umask值为0022
[[email protected] data]# id -gn
root
[[email protected] data]# id -un
root
linux中对/home目录的umask权限为077,这是在/etc/login.defs里有明确注明
[[email protected] home]# ls -ld test
drwx------. 2 test test 4096 Apr 7 22:46 test
最简单的方法:“加减法”
1、当umask值每一位为偶数时:
文件的计算方法:把最大的权限当为666来计算。
例:把umask值设为066
[[email protected] data]# umask 066
[[email protected] data]# umask
0066
[[email protected] data]# touch 066file
[[email protected] data]# ls -l 066file
-rw-------. 1 root root 0 Apr 23 13:32 066file
解:666-066=600 600就是这个文件的权限。
目录的计算方法:把最大的权限当为777来计算。
[[email protected] data]# umask 044
[[email protected] data]# umask
0044
[[email protected] data]# mkdir 044dir
[[email protected] data]# ls -ld 044dir
drwx-wx-wx. 2 root root 4096 Apr 23 13:34 044dir
解:777-044=733 733就是这个目录的最大权限。
2、当umask值每一位为奇数时:
文件的计算方法:666为最大权限
例:把umask改为043
[[email protected] data]# umask 043
[[email protected] data]# umask
0043
[[email protected] data]# touch 043file
[[email protected] data]# ls -l 043file
-rw--w-r--. 1 root root 0 Apr 23 13:39 043file
解:666-043=623 在奇数位上加1 =624
目录的计算方法:777为最大权限
例:把umask改为043
[[email protected] data]# umask 043
[[email protected] data]# umask
0043
[[email protected] data]# mkdir 043dir
[[email protected] data]# ls -ld 043dir
drwx-wxr--. 2 root root 4096 Apr 23 13:39 043dir
解:777-043=734 这个不影响哈。
总结:
umask值的每一位为偶数时:
文件的权限计算方法:666减去umask值
目录的权限计算方法:777减去umask值
umask值有奇数时:
文件的权限计算方法:666减去umask值,然后在结果的基础上,在umask的奇数位上+1
目录的权限计算方法:777减去umask值,目录不影响