在Linux下新建文件和目录的时候,不用我们去手动设置权限,就会有一个默认的权限。这个默认权限就是根据其本身最大权限和umask计算而来的。
创建文件默认最大权限为666 (-rw-rw-rw-),默认创建的文件没有可执行权限x位。
创建目录默认最大权限为777(-rwxrwxrwx),默认创建的目录有x权限,允许用户进入。
那什么是umask呢?
umask就是配合最大权限计算出默认权限的东西。
直接输入umask可以查询操作系统的umask值,默认的一般是0022。我的是0002。
这个umask也可以根据需要自己设置的。命令也很简单,比如 umask 0003。
主要看后三位022,w对应的是2,这就意味着文件的默认权限就是- rw- r- -r- - (644)。可见就是文件的最大权限里面去掉w权限,因为所有者user对应的数字是0,所以user权限不变。
同理,目录的默认权限也是最大权限去掉022,也就是drwx r-x r-x (755) 。
Why?设置umask为0004与0005时,创建的文件默认权限都是一样的
设置umask为0004的情况:
由umask的含义知拿掉4(666拿掉004),即拿掉了others的r权限(4),所以创建的0004file文件中others的权限即为-w-,也就是2了。
设置umask为0005的情况:
由umask的含义知拿掉5(666拿掉005),即拿掉了others的r权限(4)和x权限(1),但是默认创建的文件没有可执行权限x位,这时候就忽略x。所以创建的0005file文件中others的权限即为-w-,也就是2了。
结论:
对于文件来说,如果umask没有去掉x权限,则系统自动处理掉x权限;
对于文件来说,如果umask有去掉x权限,则系统按正常情况去掉相应权限;
对于目录来说,则不存在这样的情况。