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` 检查更改的权限是否生效。