一, umask 介绍
在 Linux 系统中, 我们创建一个新的文件或者目录的时候, 这些新的文件或目录都会有默认的访问权限, umask 命令与文件和目录的默认访问权限有关. 若用户创建一个文件, 则文件的默认访问权限为 -rw-rw-rw- , 创建目录的默认权限 drwxrwxrwx , 而 umask 值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值.
二, umask 值的含义
可以使用命令 umask 来查看 umask 值
- hadoop@sench-pc:~$ umask
- 0002
可以看到 umask 值为 0002, 其中第一个 0 与特殊权限有关, 可以暂时不用理会, 后三位 002 则与普通权限 (rwx) 有关, 其中 002 中第一个 0 与用户 (user) 权限有关, 表示从用户权限减 0, 也就是权限不变, 所以文件的创建者的权限是默认权限 (rw), 第二个 0 与组权限(group) 有关, 表示从组的权限减 0, 所以群组的权限也保持默认权限 (rw), 最后一位 2 则与系统中其他用户(others) 的权限有关, 由于 w=2, 所以需要从其他用户默认权限 (rw) 减去 2, 也就是去掉写 (w) 权限, 则其他人的权限为 rw - w = r, 则创建文件的最终默认权限为 -rw-rw-r-- . 同理, 目录的默认权限为 drwxrwxrwx , 则 d rwx rwx rwx - 002 = (d rwx rwx rwx) - (- --- --- -w-) = d rwx rwx r-x, 所以用户创建目录的默认访问权限为 drwxrwxr-x . 我们通过下面的例子验证一下:
- hadoop@sench-pc:~$ umask
- 0002
- hadoop@sench-pc:~$ touch test.txt
- hadoop@sench-pc:~$ ls -l test.txt
-rw-rw-r-- 1 hadoop hadoop 0 4 月 24 20:31 test.txt
- hadoop@sench-pc:~$ mkdir test
- hadoop@sench-pc:~$ ls -al test
总用量 8
drwxrwxr-x 2 hadoop hadoop 4096 4 月 24 20:32 .
drwxr-xr-x 52 hadoop hadoop 4096 4 月 24 20:32 ..
可以看到文件 test.txt 的权限为 -rw-rw-r-- , 目录 test 的权限为 drwxrwxr-x ( . 代表当前目录, 也就是 test 目录的属性).
umask 命令显示的为 umask 的数字值, 还可以使用命令 umask -S 来显示 umask 的符号值:
- hadoop@sench-pc:~$ umask -S
- u=rwx,g=rwx,o=rx
可以看出(rwx rwx rwx) - (rwx rwx r-x) = (--- --- -w-) = 002 .
三, 更改 umask 值
可以通过命令 umask 值 的方式来更改 umask 值, 比如我要把 umask 值改为 027, 则使用命令 umask 027 即可. 改成 027 后, 用户权限不变, 群组权限减掉 2, 也就是去掉写 (w) 权限, 其他用户减 7, 也就是去掉读写执行权限(rwx), 所以其他用户没有访问权限.
- hadoop@sench-pc:~$ umask 027
- hadoop@sench-pc:~$ umask
- 0027
- hadoop@sench-pc:~$ touch test.txt
- hadoop@sench-pc:~$ ls -l test.txt
-rw-r----- 1 hadoop hadoop 0 4 月 24 20:49 test.txt
- hadoop@sench-pc:~$ mkdir test
- hadoop@sench-pc:~$ ls -al test
总用量 8
drwxr-x--- 2 hadoop hadoop 4096 4 月 24 20:49 .
drwxr-xr-x 52 hadoop hadoop 4096 4 月 24 20:49 ..
可以看到文件的默认访问权限变为了 -rw-r----- , 目录 test 的默认访问权限变为了 drwxr-x--- . 这种方式并不能永久改变 umask 值, 只是改变了当前会话的 umask 值, 打开一个新的 terminal 输入 umask 命令, 可以看到 umask 值仍是默认的 002. 要想永久改变 umask 值, 则可以修改文件 / etc/bashrc, 在文件中添加一行 umask 027 .
四, 总结
当我们想改变创建文件和目录时的默认访问权限, 则可以通过 umask 命令来实现.
来源: http://www.bubuko.com/infodetail-2972635.html