Linux中umask深入理解(转)
umask(user file-creatiopn mode mask)
为用户文件创建掩码,是创建文件或文件夹时默认权限的基础。通常我们可以使用chmod
修改linux中文件的权限.umask
的作用与chmod
的效果相反,具体看下面。
若没有文件掩码时,文件的默认权限为0666
,文件夹的默认权限为0777
。
原因:
创建文件一般是用来读写,所以默认情况下所有用户都具有读写权限,但是没有可执行权限,所以文件创建的默认权限为0666
而文件夹的x权限表示的是打开权限,所以这个权限必须要有,所以文件夹的默认权限为0777
。
用户掩码作用
上述的权限是在没有umask情况下的默认权限。但是系统为了保护用户创建文件和文件夹的权限,此时系统会有一个默认的用户掩码(umask),大多数的Linux系统的默认掩码为022
。(读者可能会问,不应该只有 3 个数字(分别对应 3 种用户身份)吗,为什么有 4 个? umask 默认权限确实由 4 个八进制数组成,但第 1 个数代表的是文件所具有的特殊权限(SetUID、SetGID、Sticky BIT)。也就是说,后 3 位数字 "022" 才是本节真正要用到的 umask 权限值,将其转变为字母形式为 ----w--w-。)
用户掩码的作用是用户在创建文件时从文件的默认权限中去除掩码中的权限。所以文件创建之后的权限实际为:
#文件创建权限
默认权限(文件0666,文件夹0777)-umask
所以在用户不修改umask的情况下,创建文件的权限为:0666-0022=0644。创建文件夹的权限为:0777-0022=0755
查看与修改默认掩码
查看用户掩码:
#以数字方式查看掩码
umask
以符号形式查看掩码
umask -S
可以使用umask命令直接修改掩码。
umask 0000
上述方法修改的掩码只在当前tty中生效.若要全局生效,可以讲umask值写在/etc/profile
或者.bashrc
中
mask:
mask 权限,指的是用户或群组能拥有的最大 ACL 权限,也就是说,给用户或群组设定的 ACL 权限不能超过 mask 规定的权限范围,超出部分做无效处理。