umask 概述
操作系统在创建新文件或目录时会授予默认权限。最终权限是从这个默认权限中排除 `umask` 值所决定的。`umask` 在安全方面非常重要,例如,可以防止重要的配置文件以过于开放的权限创建。每个用户会话的 `umask` 值可能不同,通常在 `.bashrc` 或 `.profile` 等 shell 初始化文件中进行设置。
umask 的工作原理
umask 是 指定“排除”权限的掩码值,而不是允许的权限。也就是说,从默认最大权限中减去 umask 值后的结果就是最终权限。
默认最大权限
- 文件:
666(读取和写入,无执行权限) - 目录:
777(包括读取、写入和执行权限)
umask 计算方式
umask 用 3 位八进制数字表示(例如:022,002)。这个值按所有者(User)、组(Group)、其他(Others)顺序应用。每位数字代表权限位(读取 = 4,写入 = 2,执行 = 1)的总和。最终权限的计算方式如下:
| 类型 | 默认最大权限 | umask | 最终权限 |
|---|---|---|---|
| 文件 | 666 (rw-rw-rw-) | 022 (--w--w-) | 644 (rw-r--r--) |
| 目录 | 777 (rwxrwxrwx) | 022 (--w--w-) | 755 (rwxr-xr-x) |
常见 umask 值
在大多数系统中,默认 umask 值为 0022 或 0002。前面的 0 表示特殊权限(粘滞位、SGID、SUID),通常设置为 0。
常见 umask 值的含义
umask 022: 文件以644(rw-r--r--),目录以755(rwxr-xr-x)权限创建。这是将所有权限授予所有者,而给予组和其他用户读取和执行权限的最常见设置。umask 002: 文件以664(rw-rw-r--),目录以775(rwxrwxr-x)权限创建。这允许组用户也拥有写权限,便于同组内的协作。umask 077: 文件以600(rw-------),目录以700(rwx------)权限创建。这是一种非常严格的权限设置,除了所有者外,任何人都无法访问。适用于安全性非常重要的个人文件或目录。
主要 umask 命令选项
`umask` 命令用于检查当前值或设置新值。若不带选项使用,则显示当前 `umask` 值。
1. umask 值检查与设置
生成的命令:
请尝试组合命令。
描述:
`umask` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
使用示例
通过 `umask` 命令的各种应用示例,学习如何检查和设置新创建文件和目录的默认权限。
检查当前 umask 值
umask
检查当前 shell 会话的 `umask` 值,格式为八进制(例如:`0022`)。
以符号模式检查 umask 值
umask -S
以最终允许的权限形式(例如:'u=rwx,g=rx,o=rx')检查 `umask` 值,而不是以八进制显示。
设置 umask 值为 002
umask 002
将新创建的文件设置为 `664`(rw-rw-r--),目录设置为 `775`(rwxrwxr-x)权限,改变 `umask`。(允许同组用户写权限)
设置严格的 umask 值为 077
umask 077
将新创建的文件设置为 `600`(rw-------),目录设置为 `700`(rwx------)权限,改变 `umask`。除了所有者外,任何人都无法访问。
检查更改 umask 后的文件/目录创建权限
umask 002
touch test_file_002.txt
mkdir test_dir_002
ls -l test_file_002.txt test_dir_002
在将 umask 设置为 `002` 后,创建新文件和目录,并使用 `ls -l` 检查更改的权限是否生效。