命令
umask
描述
Display or set file mode mask
显示或或设置文件掩码
用法
选项
-S 以符号格式显示默认目录权限
mode为3位八进制数,取值范围000-777
注意
默认文件和目录的权限由umask值控制,默认文件权限为666-umask值,默认目录权限为777-umask值
默认umask配置在/etc/profile和/etc/bashrc
中,但不建议修改默认值
普通用户默认umask值为002,则新建文件权限为666-002=664,即-rw-rw-r–,新建目录权限为777-002=775,即drwxrwxr-x
root用户默认umask值为022,则新建文件权限为666-022=644,即-rw-r–r–,新建目录权限为777-022=755,即drwxr-xr-x
如果更改了当前shell环境的umask值,则后续新建的文件或目录权限均会改变,所以推荐使用子shell的方式临时更改掩码,不影响当前shell环境
umask值并非简单的加减,而是使用二进制的异或运算得出的默认权限,过程如下
1 2 3 4 5 6 7 8 9
| 000 000 010 -> 002,umask值
110 110 110 文件权限默认值666,与umask值进行^异或运算,即相同为0,不同为1 000 000 010 110 110 100 -> 664,即为默认的文件权限
111 111 111 目录权限默认值777,与umask值进行^异或运算 000 000 010 111 111 101 -> 775,即为默认的目录权限
|
常用umask值
umask值 |
文件权限 |
目录权限 |
002 |
664 |
775 |
022 |
644 |
755 |
027 |
640 |
750 |
007 |
660 |
770 |
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| $ umask 0022
$ umask -S u=rwx,g=rx,o=rx
$ touch filea $ mkdir dira $ ls -al drwxr-xr-x 2 root root 6 Dec 22 16:05 dira/ -rw-r--r-- 1 root root 0 Dec 22 16:05 filea
$ umask 222 $ touch fileb $ mkdir dirb $ ls -al drwxr-xr-x 2 root root 6 Dec 22 16:05 dira/ dr-xr-xr-x 2 root root 6 Dec 22 16:06 dirb/ -rw-r--r-- 1 root root 0 Dec 22 16:05 filea -r--r--r-- 1 root root 0 Dec 22 16:06 fileb
$ (umask 000;touch filec;mkdir dirc) $ ll drwxr-xr-x 2 root root 6 Dec 22 16:05 dira/ dr-xr-xr-x 2 root root 15 Dec 22 16:06 dirb/ drwxrwxrwx 2 root root 6 Dec 22 16:07 dirc/ -rw-r--r-- 1 root root 0 Dec 22 16:05 filea -r--r--r-- 1 root root 0 Dec 22 16:06 fileb -rw-rw-rw- 1 root root 0 Dec 22 16:07 filec
$ umask 0022 $ mkdir dir1 $ (umask 002;mkdir dir2)
$ ll -d dir* drwxr-xr-x 2 root root 6 Feb 23 16:41 dir1/ drwxrwxr-x 2 root root 6 Feb 23 16:42 dir2/
$ chmod 775 dir1 $ ll -d dir* drwxrwxr-x 2 root root 6 Feb 23 16:41 dir1/ drwxrwxr-x 2 root root 6 Feb 23 16:42 dir2/
$ chown :ftp dir1 dir2 $ ll -d dir* drwxrwxr-x 2 root ftp 6 Feb 23 16:41 dir1/ drwxrwxr-x 2 root ftp 6 Feb 23 16:42 dir2/
|