如何设置UNIX/Linux中新创建目录或文件的默认权限
在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文件,并用找到的第一个作为自己的配置文件,因此根据实际环境修改相应的文件