权限掩码

文件rwx权限

在了解权限掩码之前先了解下权限的基本知识
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
w(Write,写入):对文件而言,具有新增,修改,删除文件内容的权限;对目录来说,具有新建,删除,修改,移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。

r、w、x分别是4、2、1。 
7代表所有权限
6代表读写
5代表读执行
4代表只读
3代表写执行
2代表只写
1代表只执行

下图中第一个文件权限有一个d,d表示当前是一个文件夹


权限掩码

我们都知道在linux下创建一个文件或者目录之后是可以通过chmod等命令进行权限设置,来达到给当前用户、用户组用户以及其他用户分配不同的访问权限。那么,我们新创建的目录和文件本身也是有它的默认权限的,这个默认权限是什么,就是由权限掩码umask所确定的。它的功能可以说与chmod刚好相反的,代表默认拿走的也就是说不要的权限。

计算方式

    如果用户创建的是目录,则默认所有权限都开放,为777,默认为:drwxrwxrwx

    如果创建的是文件,默认没有x权限,那么就只有r、w两项,最大值为666,默认为:-rw-rw-rw-
    
    那么之前所说的拿走的权限就是这里这个默认值要减掉的权限,r、w、x分别是4、2、1,要拿掉读权限就输入4,拿掉写权限就输入2,以此类推。


    新建文件:666-022=644;
    新建目录:777-022=755.

    对于目录,直接使用777-umask即可,就得到了最终结果。
    对于文件,先使用666-umask。
        如果对应位上为偶数:最终权限就是这个偶数值。
        如果上面的对应为上有奇数,就对应位+1。
    上面的这个方法计算是非常方便的, 为何得到奇数要+1呢。

    文件的最大权限是666,都是偶数,你得到奇数,说明你的umask有奇数啊,读为4,写为2,都是偶数,说明你有执行权限的。

    就按照上面的umask=023为例,在计算其他用户权限的时候6-3=3 ,6是读写,3是写和执行,
    其实应该是读写权限减去写权限的得到读权限的,相当于我们多减去了一个执行权限。所以结果加1。

linux查看权限掩码命令

umask       数字形态的权限设置分数
umask -S    符号类型的方式来显示出权限

[root@root ~]# umask
0022
[root@root ~]# umask -S
u=rwx,g=rx,o=rx
[root@root ~]#

0022
第一个0表示是文件或目录的特殊权限
第二个0表示文件或目录的拥有者有所有的rwx权限
第三个2表示文件或目录的所属组被拿走了w权限,及所属组的权限是r-x
第四个2表示文件或目录的其他人被拿走了w权限,及其他人的权限是r-x

新建目录的默认权限是:rwxr-xr-x
新建文件的默认权限是:rw-r–r--(Linux中文件默认都会拿走x权限)

临时修改默认权限

[root@root ~]# umask 0000
[root@root ~]# umask
0000

永久修改默认权限

编辑文件/etc/bashrc
在当前的shell环境中生效
1、如果用su - user1 来切换用户,表示换了shell环境,该配置文件不会生效
2、如果用su user1 来切换用户,表示没有换shell环境,该配置文件会生效

-代表切换用户会把环境变量中的配置文件全替换成新用户

编辑文件/etc/profile
可以在整个系统中生效

[root@root ~]# vim /etc/bashrc
[root@root ~]# vim /etc/profile

两个文件的内容是一样的
搜索umask,找到如下代码,不算第一位的特殊权限

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
  umask 002   //表示uid大于等于199的默认umask值,表示普通用户
else
 umask 022    //表示uid小于199的默认umask值,表示root
fi

修改后需要重新读取一下/etc/bashrc或/etc/profile
[root@root ~]# source /etc/profile
[root@root ~]# source /etc/bashrc

你可能感兴趣的:(权限掩码)