linux 用户的目录、文件权限,权限掩码umask
1.目录权限
r: 可以查询该目录下的文件名。
w:可以在该目录下删除文件、新建文件、更改文件名。
x:进入该目录(使得该目录成为工作目录)
2.文件权限
r:(可读),显示该文件的内容(如:cat命令)
w:(可写),可以编辑文件,修改文件的内容(如:vim命令)
x:(可执行),该文件是可执行文件
举例:
以下例子都需要用到目录和文件的什么权限?
例1:用户能进入某目录(cd命令)
答:目录:x权限
例2:查看某目录下的文件(ls命令)
答:目录:r权限
例3:用户在目录内读取文件(cat less more命令)
答:目录:x权限
文件:r权限
例4:用户能修改目录内的文件()
答:目录:x权限
文件:r,w权限
例5:用户在目录内创建文件
答:目录:x,w权限
3.目录和文件的最大默认权限
目录的最大默认权限777:rwxrwxrwx
文件的最大默认权限666:rw-rw-rw-
关于权限的字母表示和数字表示下面会讲
4.权限的字母表示和数字表示
777为什么对应rwxrwxrwx?
777每一位数字转化为二进制表示就是111 111 111,
9个字母(rwxrwxrwx)与9个数字(111111111)位置一一对应,
如果字母对应的数字为1,那么就说明该字母所表示的权限生效,
如果字母对应的数字为0,那么就说明该字母所表示的权限无效,相应字母位置用-替代。
根据以上规则所以我们可以推出666对应的字母表示
666 ===> 110 110 110 ===> rw-rw-rw-
5.用户的权限掩码
查看用户的权限:umask命令
修改用户的权限掩码:umask xxx命令
6.计算用户的真实目录权限
问:
用户的默认目录权限为777,
假设用户的权限掩码为002,
那么用户的真实权限是?
答:
777 ===> 111 111 111 ===> rwxrwxrwx
002 ===> 000 000 010 ===> -------w-
(rwxrwxrwx )减去 (-------w-) 等于 (rwxrwxr-x)
所以用户的真实目录权限为rwxrwxr-x ===> 111 111 101 ===> 775
7.计算用户的真实文件权限
问:
用户的默认文件权限为666,
假设用户的权限掩码为002,
那么用户的真实权限是?
答:
666 ===> 110 110 110 ===> rw-rw-rw-
002 ===> 000 000 010 ===> -------w-
(rw-rw-rw- )减去 (-------w-) 等于 (rw-rw-r--)
所以用户的真实文件权限为rw-rw-r-- ===> 110 110 100 ===> 664
8.计算时为什么用字母相减而不直接用数字相减
举例:
若用户的权限掩码为033,
按照数字形式计算用户的文件权限,666-033=633,
但我们按照数字的形式计算会得到
(rw-rw-rw-)减去(----wx-wx)等于(rw-r--r--) 换算成数字是644
这是为什么呢?
因为数字形式,666,033实际上是八进制表示法,
我们在运算的时候最终和二进制有出入,
如果真的想用数字计算的话,不能666-033这样减,还需要做奇偶处理
【如果umask的部分位或全部位为奇数,
那么,在对应为奇数的文件权限位计算结果分别再加1就是最终文件权限值。】
具体计算样例参考这个链接:
[这个博主讲的很清楚](https://www.cnblogs.com/liujiacai/p/8319923.html)
9.在一个空目录下执行umask 333; touch hello;命令后,hello文件的权限为?
hello文件默认最大权限为666 ==> rw-rw-rw-
权限掩码:333 ==> -wx-wx-wx
(rw-rw-rw ) 减去 ( -wx-wx-wx) 等于 (r--r--r--) ==> 444