一般来说 Linux 上的文件或目录使用一组默认的权限进行创建,umask 命令可用于查看或设置创建新文件的时的默认权限。
不带任何选项参数的情况下使用 umask 命令就是查看当前的掩码值:
umask
0022可以看到当前的掩码值是 0022,在一些发行版中也常见为 0002
然后使用 touch 和 mkdir 创建一个文件和目录再看看它们的权限是怎样的:
touch file.txt
mkdir dir
ls -ldrwxr-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 的配置文件。