用户创建文件或者文件夹的时候都会有默认权限,且创建文件的时候u(拥有者),g(所属组),o(其他组)默认都会没有x权限。
那么如何查看当前用户默认没有那些权限呢?
通过umask查看,会得到一组4位数,第一个表示特殊权限,后3个分别对应u,g,o所不具有的权限,千万不要搞错了,umask不是用来查看默认具有那些权限的,而是用来查看默认没有那些权限的。
查看root用户的umask
得到的后3位是022,根据r=4,w=2,x=1的权限和数字的表示关系可知,第一个0表示u不失去任何权限,换句话说u具有rwx的默认权限;第二个数字是2,表示g会失去w的权限,也就是g的默认权限是rx;最后一个2表示o会失去w的权限,所以o的默认权限也是rx。
通过umask -R 命令可以查看ugo默认权限rwx表示方式:
结果和上面用数字描述的结果是一样的。
因此,根据上面的特点,可以发现root账号创建文件夹的时候,默认权限就是rwxr-xr-x,如下所示:
而创建文件的默认权限是rw-r--r--,因为创建文件默认会去掉x权限,如下所示:
如何修改默认权限?
1.临时修改,通过umask 四位权限数 来指定,例如umask 0000 表示ugo默认都不去掉任何权限,对于创建目录的默认权限就是rwxrwxrwx;而对于文件的默认权限就是rw-rw-rw-
2.永久修改,编辑/etc/bashrc文件,不建议修改默认值。
什么情况下需要修改umask呢?
假设你和你的同事在同一个目录下进行同一个项目的工作,如果使用默认权限022,那么你创建的文件,你的同事将无法编辑,因为g和o都失去了w的权限,因此我们可以将权限调整为022。这点也可以看出为什么root用户创建的默认文件和文件夹,普通用户是无法编辑的(包括对文件或者文件夹的重命名、移动和删除,对文件的编辑,以及文件夹内的子文件或文件夹的增删改操作)。