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