2009-03-16

umask设置文件权限

umask用于设置新建的文件或文件夹的默认权限.

umask和chmod一样,文件权限可以用数字指定,也可以用字符指定,但是umask对两种指定方式的使用有所不同.
用数字指定的话,文件的权限就是777(对文件夹)或666(对文件)与该数字取反后逻辑与的结果,例如
$ umask 123

$ touch umask.test.1

$ ls -l umask.test.1
-rw-r--r-- 1 Administrator None 0 Mar 17 19:59 umask.test.1

$ mkdir umask.test.2

$ ls -ld umask.test.2
drw-r-xr--+ 2 Administrator None 0 Mar 17 19:59 umask.test.2

123写成二进制即 001 010 011 (权限的最大值是7,所以用3位就足够了), 取反后即110 101 100; 对于新建的文件,无论umask如何设置,都是不能有执行权限的,文件的可执行权限必须另外用chmod增加,所以文件的最大权限值只能是666. 666即110 110 110, 110 101 100 AND 110 110 110 = 110 100 100, 即rw-r--r--. 所以文件umask.test.1即rw-r--r--. 对于文件夹, 权限的最大值为777, 即 111 111 111, 110 101 100 AND 111 111 111 就是110 101 100, 即 rw-r-xr--,所以文件夹umask.test.2的权限是rw-r-xr--.

用字符指定权限的话,文件的权限就是umask指定的权限,不用经过任何运算
$ umask u-r,g=w,o+w

$ touch umask.test.3

$ ls -l umask.test.3
--w--w-rw- 1 Administrator None 0 Mar 17 20:22 umask.test.3

$ mkdir umask.test.4

$ ls -ld umask.test.4
d-w--w-rw-+ 2 Administrator None 0 Mar 17 20:22 umask.test.4

在用数字指定权限那个例子后,新建的文件的默认权限是rw-r--r--,新建的文件夹的权限是rw-r-xr--;然后,在现在这个例子中,umask指定了u-r,g=w,o+w, 所以新建的文件的权限就是-w--w-rw-, 新建的文件夹的权限就是-w--w-rw-

转载请注明出处 http://fornote.blogspot.com

没有评论:

发表评论