一般来说 Linux 上的文件或目录使用一组默认的权限进行创建,umask 命令可用于查看或设置创建新文件的时的默认权限。

不带任何选项参数的情况下使用 umask 命令就是查看当前的掩码值:

umask
0022

可以看到当前的掩码值是 0022,在一些发行版中也常见为 0002

然后使用 touchmkdir 创建一个文件和目录再看看它们的权限是怎样的:

touch file.txt
mkdir dir

ls -l
drwxr-xr-x 2 toor toor 4096 Sep  2 14:46 dir
-rw-r--r-- 1 toor toor    0 Sep  2 14:46 file.txt

也就是说这些权限是默认值减去 umask 掩码值得到的:

  • 目录 dir:0777 - 0022 \= 755(rwxr-xr-x);
  • 文件 file.txt:6000 - 0022 \= 644(rw-r--r--);

此时我想要更改默认权限,就可以反推一下进行设置掩码值,如:

umask 0002 # 之前是 0022

touch test.txt

ls -l test.txt
-rw-rw-r-- 1 toor toor 0 Sep  2 14:52 test.txt

可以看到新创建的文件默认权限已经变成了 664(rw-rw-r--)

使用 umask 掩码值并不会改变之前文件的权限,而且仅临时生效于当前 shell 会话,如果想要永久生效需要修改 shell 的配置文件。

References

最后修改:2024 年 10 月 31 日
如果觉得我的文章对你有用,请随意赞赏