1.文件默认权限:umask
OK,那么现在我们知道如何建立或是改变一个目录或文件的属性了,不过,你知道当你建立一个新的文件或目录时,它的默认权限会是什么吗?
呵呵,那就与umask这个玩意儿有关了,那么umask是在做什么?
基本上,umask就是指定目前用户在建立文件或目录时候的权限默认值,那么如何得知或设置umask?它的指定条件以下面的方式来指定:
查看的方式有两种,
- 一种可以直接输入umask,就可以看到数字类型的权限设置值,
- 一种则是加入 -S(Symbolic)这个选项,就会以符号类型的方式来显示出权限了。
奇怪的是,怎么umask 会有四组数字?不是只有三组吗?
是没错,第一组是特殊权限用的,我们先不要理它,所以先看后面三组即可。
在默认权限的属性上,目录与文件是不一样的,从我们知道X权限对于目录是非常重要的。但是一般文件的建立则不应该有执行的权限,因为一般文件通常是用于数据的记录,当然不需要执行的权限了。
因此,默认的情况如下:
- 若用户建立为文件则默认没有可执行(x)权限,即只有rw 这两个项目,也就是最大为666,默认权限如下:
-rw-rw-rw-
- 若用户建立为目录,则由于x与是否可以进入此目录有关,因此默认为所有权限均开放,即777,默认权限如下:
drwxrwxrwx
要注意的是,umask的数字指的是该默认值需要减掉的权限。
因为r、w、x分别是4(二进制:100)、2(二进制:010)、1(二进制:001),所以,当要拿掉能写的权限,就是输入2(二进制:010);
- 而如果要拿掉能读的权限,也就是4(二进制:100);
- 那么要拿掉读与写的权限,也就是6(二进制:110);
- 而要拿掉执行与写入的权限,也就是3(二进制:011)。
这样了解吗?请问你,5(二进制:101)是什么?呵呵,就是读与执行的权限。
如果以上面的例子来说明的话,因为umask为022,所以user并没有被拿掉任何权限,不过group
与others 的权限被拿掉了2(也就是w这个权限),那么当用户:
- 建立文件时:(-rw-rw-rw-) - (-----w--w-) = -rw-r--r--
- 建立目录时:(drwxrwxrwx) - (d----w--w-) = drwxr-xr-x
不相信吗?我们就来测试看看吧!
呵呵,看见了吧!确定新建文件的权限是没有错的。
1.1.umask 的利用与重要性:课题制作
想象一个状况,如果你跟你的同学在同一台主机里面工作时,因为你们两个正在进行同一个课题,老师也帮你们两个的账号建立好了相同用户组的状态,并且将 /home/class/目录做为你们两个人的单题目录。
想象一下,有没有可能你所制作的文件你的同学无法编辑?果真如此的话,那就伤脑筋了。这个问题经常发生。举上面的案例来看,你看一下 test1 的权限数值是什么?644,意思是如辈umask 制定为022,那新建的数据只有用户自己具有w的权限,同用户组的人只有,这个可读的权厚而已,并无法修改。这样要怎么共同制作课题,您说是吧!
所以,当我们需要新建文件给同用户组的用户共同编辑时,那么 umask 的用户组就不能拿掉2以个w的权限。所以ÿ