Linux文件与目录默认权限

时间:2021-06-24 15:12:57

Linux下创建文件和目录分别可以使用命令touch和mkdir。创建的文件默认作为不可执行文件,因此没有x(execute)权限。而创建的目录则默认是有x执行权限的,因为目录的执行权限可以让用户切换此目录为工作目录。

但是我们创建文件和目录后,使用 ls -l 命令可以看到,文件和目录的权限一般并不是-rw-rw-rw-和drwxrwxrwx。这就是umask的作用了。

$ umask
0022
$ umask -S  #以符号形式显示umask
u=rwx, g=rx, o=rx

其中4位数字显示的权限,第一位用于特殊权限,我们常用的是后三位代表的文件和目录的普通权限(u+g+o)。

那么umask是怎么起作用的呢?

如果umask为0000,那么创建的文件的默认权限为rw-rw-rw-,对应二进制数字 110 110 110。

当umask后三位为022时,这个数字是8进制的,对应的二进制为000 010 010,那么我们创建的文件的默认权限为(110 110 110) & ^ (000 010 010),即umask的二进制位按位取反后,与文件本应有的权限进行按位与操作。其意义就是文件的默认权限中去除umask中对应为1的二进制位的权限;umask某一权限位为1则对应的文件中不应该有这个权限。

目录的权限与umask的关系同文件。

umask的设置方法为:

$ umask 002  #设置umask为002

参考:

http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager_4.php