2014年5月25日星期日

Linux_058:常用命令之十九:umask

环境:RHEL 6.5

以普通用户身份登录,然后
(1)使用touch命令创建一个文件时,默认的权限是这样的:
-rw-rw-r-- 1 maping maping    0 5月  25 11:10 2.txt
(2)使用mkdir命令创建一个目录时,默认的权限是这样的:
drwxrwxr-x 2 maping maping 4096 5月  25 11:11 folder1

有没有想过,这是为什么呢?
答案就在umask,umask 可以指定目前使用者在创建文件或目录权限预设值。

运行 umask,你可以看到当前用户的预设值,普通用户一般为:0002。
我们先只看后三位:002,规则是这样的:
(1)创建文件时,默认权限 = 666-umask 的数值,即664。
这也就是为什么普通用户创建文件后,默认权限是rw-rw-r--的原因。
(2)创建目录时,默认权限 = 777-umask 的数值,即775。
这也就是为什么普通用户创建目录后,默认权限是rwxrwxr-x的原因。

以 root 用户身份登录,然后
(1)使用touch命令创建一个文件时,默认的权限是这样的:
-rw-r--r-- 1 root   root      0 5月  25 11:31 3.txt
(2)使用mkdir命令创建一个目录时,默认的权限是这样的:
drwxr-xr-x 2 root   root   4096 5月  25 11:32 folder2
运行umask,你可以看到root用户的预设值为:0022。
使用上面的规则,我们同样可以得出为什么root用户默认的权限是这样的。
因为写权限是比较重要的权限,所以对与root用户同组的用户和其他用户都拿掉了写权限。

系统默认的 umask 定义在 /etc/profile 和 /etc/bashrc 文件中,如果想要umask设置永久有效,这两个文件都要修改。
比如:禁止其他用户有任何权限,可以设置 umask = 007。
普通用户可以覆盖系统的umask设置,方法是修改 ~/.bash_profile 或 ~/.bashrc 文件中的 umask 值。 

参考文献:
1. http://billie66.github.io/TLCL/book/zh/chap10.html
2. http://linux.vbird.org/linux_basic/0220filemanager/0220filemanager.php
3. http://blog.csdn.net/lmh12506/article/details/7281910

没有评论: