在unix或者linux中,每创建一个文件或者目录时,这个文件或者目录都具有一个默认的权限,比如目录755,文件644,那么这些默认权限是怎么控制的呢?
答案是“umask”权限掩码。一般默认的umask值为022,其最终效果就是新创建的目录权限为755,文件权限为644。所以只要修改了用户的umask值,就可以控制默认权限。
怎么查看当前umask值?
umask
0022
umask -S (SuSE Linux Enterprise 11实例)
u=rwx,g=rx,o=rx
怎么根据实际需要设置umask值?
其实umask是权限的反码,你可以根据文件或者目录权限的数字表示值计算得到。
目录:7- 权限数字
文件:目录权限去掉执行权限(不要使用目录权限减1,否则本来就没有执行权限还要减1就搞错了)
如果您希望新建目录的默认权限为755,那么可以设置umask值为:
7-7=0 7-5=2 7-5-2 即022
此时文件的权限为目录权限去掉执行权限,即644。
常见权限掩码示例
umask值 | 目录 | 文件 |
022 | 755 | 644 |
027 | 750 | 640 |
002 | 775 | 664 |
006 | 771 | 660 |
007 | 770 | 660 |
怎么修改umask值?
umask 三位数字(每位数字只能是1-7中的任一数字)
示例:
执行该命令只能使得本次登录有效,如果退出本次登录,下次不会有作用。
怎么让umask值在用户每次登录后都有效?
将umask命令语句放到用户环境变量profile文件中。
修改所有用户的umask值
在/etc/profile中增加语句umask nnn(权限掩码数字)
修改指定用户的umask值
根据不同的shell,修改不同的配置文件,在其中增加语句umask nnn(权限掩码数字),重新登录即可生效。
Bourne Shell (sh):$HOME/.profile
Korn Shell (ksh):$HOME/.profile
C Shell (csh): $HOME/.login
Bourne Again Shell(bash):它会在用户目录$HOME下依次查找.bash_profile,.bash_login,.profile文件,并用找到的第一个作为自己的配置文件,因此根据实际环境修改相应的文件