咱们今天简单了解下 umask 命令,这个命令可以帮助咱们管理文件和目录的访问权限,很简单~在 Linux 系统中,当我们创建新的文件或目录时,它们会自动拥有默认的访问权限。对于新文件,默认权限为 -rw-rw-rw-,而对于新目录,默认权限为 drwxrwxrwx。umask 命令则用于控制从这些默认权限中去除哪些权限,以确定最终的访问权限值。通过设置 umask,用户可以灵活管理新创建文件和目录的权限。perfect@kn-pc:~$ umask 0002
可以看到,umask 值为 `0002`。其中,第一个 `0` 代表特殊权限,可以暂时忽略不计,而后三位 `002` 则与普通权限(`rwx`)相关。具体来说:- 第一个 `0` 表示用户(user)的权限未改变,因此文件创建者的权限保持为默认值 `rw-`。
- 第二个 `0` 表示组(group)的权限也未减,因此群组的权限仍然是默认值 `rw-`。
- 最后一位 `2` 与其他用户(others)的权限相关,由于 `w=2`,意味着需要从其他用户的默认权限 `rw-` 中去掉写(`w`)权限。因此,其他用户的权限变为 `r--`。
因此,创建文件的最终默认权限为 `-rw-rw-r--`。同样地,对于目录,其默认权限为 `drwxrwxrwx`。应用 `umask 002` 后的计算如下:(d rwx rwx rwx) - (- --- --- -w-) = d rwx rwx r-x
这表示用户创建目录的默认访问权限为 `drwxrwxr-x`。接下来,我们可以通过以下示例进行验证:perfect@kn-pc:~$ umask 0002perfect@kn-pc:~$ touch ceshi.txtperfect@kn-pc:~$ ls -l ceshi.txt -rw-rw-r-- 1 perfect perfect 0 4月 24 20:31 ceshi.txtperfect@kn-pc:~$ mkdir ceshiperfect@kn-pc:~$ ls -al ceshi总用量 8drwxrwxr-x 2 perfect perfect 4096 4月 24 20:32 .drwxr-xr-x 52 perfect perfect 4096 4月 24 20:32 ..
可以看到文件ceshi.txt的权限为 -rw-rw-r-- ,目录test的权限为 drwxrwxr-x ( . 代表当前目录,也就是test目录的属性)。 umask 命令显示的为umask的数字值,还可以使用命令 umask -S 来显示umask的符号值:perfect@kn-pc:~$ umask -Su=rwx,g=rwx,o=rx
可以看出(rwx rwx rwx) - (rwx rwx r-x) = (--- --- -w-) = 002 。如果 umask 设置为 022,那么新创建的文件权限将是 666 - 022 = 644(即 rw-r--r--),而新创建的目录权限将是 777 - 022 = 755(即 rwxr-xr-x)。这意味着新文件的权限将是 640(即 rw-r-----),新目录的权限将是 750(即 rwxr-x---)。如果你只希望在当前会话中更改 umask 值,可以直接在终端中设置,而不需要修改配置文件。重新启动终端后,umask 将恢复为默认值。要永久更改 umask 值,可以将 umask 命令添加到用户的 shell 配置文件中,例如 ~/.bashrc 或 ~/.bash_profile:echo"umask 027" >> ~/.bashrc
- 在某些情况下,特定程序可能会忽略 umask 设置。
- umask 只影响新创建的文件和目录,不会改变已存在文件的权限。
- 设置 umask 时,确保理解对系统安全的影响,尤其是在多用户环境中。
通过合理设置 umask,可以帮助管理文件和目录的访问权限,从而提高系统的安全性。