在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值
怎么修改umask值?
umask 三位数字(每位数字只能是1-7中的任一数字)
示例:
umask 022
执行该命令只能使得本次登录有效,如果退出本次登录,下次不会有作用。
怎么让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文件,并用找到的第一个作为自己的配置文件,因此根据实际环境修改相应的文件。
普通文件默认是644 也就是:
-rw-r--r-- 1 root root 0 May15 20:04 test
自已有读写(rw),同组人员有读(r),其它有读(r)
默认权限可通过umask 修改
默认umask 为022
文件:666 - 022 = 644
目录:777 - 022 = 755
如果你下了umask 011 的指令,则生成的文件目录权限就变成:
文件:666 - 011 = 655
目录:777 - 011 = 766
字符方式
who: u文件属主权限,g同组用户权限,o其他用户权限,a所有用户(文件属主、同组及其他用户);
operator: +增加权限,-取消权限,=设定权限;
permission: r读权限,w写权限,x执行权限。
chmod a-x file rw- rw- rw- 收回所有用户的执行权限
chmod og-w file rw- r-- r- - 收回同组用户和其他用户的写权限
chmod g+w file rw- rw- r- - 赋予同组用户写权限
chmod u+x file rwx rw- r- - 赋予文件属主执行权限
chmod go+x file rwx rwx r- x 赋予同组用户和其他用户执行权限
设置用户的umask值