1、umask是什么
当我们登录系统之后创建一个文件是会有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask用于设置用户创建文件或者目录的默认权限,umask设置的是权限的“补码”,而我们常用chmod设置的是文件权限码。一般在/etc/profile, HOME/.bash_profile 或者 HOME/.profile中设置umask值。
2、umask的作用
默认情况下的umask值是022(可以用umask命令查看),此时你建立的文件默认权限是644(6-0,6-2,6-2),建立的目录的默认权限是755(7-0,7-2,7-2)
[root@udp1 ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@udp1 ~]# umask
0022
[root@udp1 ~]# touch a.txt
[root@udp1 ~]# mkdir b
[root@udp1 ~]# ll
total 8
-rw------- 1 root root 2874 6月 2 2016 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 6月 28 15:54 a.txt
drwxr-xr-x 2 root root 4096 6月 28 15:54 b
[root@udp1 ~]#
也可使用umask -S显示umask的符号值
[root@udp1 ~]# umask -S
u=rwx,g=rx,o=rx
3、linux默认的umask
linux系统新建文件默认没有执行权限,文件的最大权限为rw-rw-rw-(666),新建目录的最大权限为rwx-rwx-rwx(777),因为目录必须要有x才能进入。
umask的作用是设置用户环境下,创建文件或者目录的权限控制。一般umask的值是在 /etc/profile 文件中定义的,用户登入必须会读取这个文件,所以一般被设置在这个目录中。如一台centos6的系统中默认配置:
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
# 意思是账号uid大于199且uid=gid且用户名=用户组名的时候,umask值是002,而其他用户下,umask值是022
4、umask快速计算
- 对于目录,直接使用777-umask即可,就得到了最终结果
- 对于文件,先使用666-umask
- 如果对应位上为偶数:最终权限就是这个偶数值
- 如果上面的对应为上有奇数,就对应位+1
为何得到奇数要+1呢?
文件的最大权限是666,都是偶数。你得到奇数,说明你的umask有奇数啊,读为4,写为2,都是偶数,说明你有执行权限的。
就以umask=023为例,在计算其他用户权限的时候6-3=3 ,6是读写,3是写和执行,其实应该是读写权限减去读权限能得到写权限的,相当于我们多减去了一个执行权限。所以结果加1。
5、umask的修改
umask的修改分2种,临时修改和永久修改
临时修改:
[root@udp1 opt]# umask 023
[root@udp1 opt]# umask
0023
[root@udp1 opt]#
永久修改:
可以编辑以下文件 添加umask=022。
交互式登陆的配置生效:
/etc/profile < /etc/profile.d/*.sh < ~/.bash_profile < ~/.bashrc < /etc/bashrc 【/etc/bashrc的配置最有效,可以覆盖前面的配置】
非交互登陆的配置生效:
~/.bashrc < /etc/bashrc < /etc/profile.d/*.sh
标签:profile,umask,etc,udp1,权限,root From: https://www.cnblogs.com/mmartin/p/17665586.html