umask(用户文件创建掩码)是用于控制新创建文件和目录默认权限的机制。它通过屏蔽(关闭)特定的权限位来确保文件或目录不会拥有过于开放的权限,从而提高安全性。
核心概念
-
权限表示
Linux中权限分为读(r,4)、写(w,2)、执行(x,1),用三位八进制数表示(如755)。-
文件默认最大权限:
666(即rw-rw-rw-,无执行权限)。 -
目录默认最大权限:
777(即rwxrwxrwx,需执行权限才能进入)。
-
-
umask的作用
umask是一个掩码值,通过按位取反后与默认权限进行逻辑与操作,得到实际权限。
公式:实际权限 = 默认权限 & (~umask)
示例解析
示例1:umask 022
-
文件权限计算
-
默认权限:
666→ 二进制110 110 110 -
umask值:
022→ 二进制000 010 010 -
取反后:
111 101 101(对应八进制755) -
实际权限:
666 & 755 = 644→rw-r--r--
-
-
目录权限计算
-
默认权限:
777→ 二进制111 111 111 -
实际权限:
777 & 755 = 755→rwxr-xr-x
-
结果:新文件权限为 644,目录为 755。
示例2:umask 002
-
文件权限:
666 & 775 = 664→rw-rw-r-- -
目录权限:
777 & 775 = 775→rwxrwxr-x
适用场景:适用于团队协作,允许同组用户读写文件。
示例3:umask 077
-
文件权限:
666 & 700 = 600→rw------- -
目录权限:
777 & 700 = 700→rwx------
适用场景:严格隐私保护,仅所有者有权限。
查看与设置umask
-
查看当前umask:
umask # 输出数字格式(如 0022) umask -S # 输出符号格式(如 u=rwx,g=rx,o=rx) -
临时设置umask:
umask 027 # 新会话中生效 -
永久设置:
-
将
umask [值]添加到 Shell 配置文件(如~/.bashrc或/etc/profile)。
总结
-
umask值越大,权限越严格。常用值如
022(默认)、002(宽松协作)、077(严格隐私)。 -
文件 vs 目录:目录需要执行权限(
x),因此相同umask下目录权限比文件多x。 -
安全建议:避免使用过于开放的
umask(如000),防止意外暴露敏感数据。
901

被折叠的 条评论
为什么被折叠?



