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