创建一个新目录和一个新文件,它们的初始权限是什么?试一试就知道了:
由此可见,目录的权限是755(rwxr-xr-x),文件的权限是644(rw-r--r--)。这是它们的默认权限,这个默认值是可以用内置命令umask设置的。直接运行umask可以显示当前的掩码值:
所谓掩码,简单地说,是一个八进制的三位数,就是从满权限中“拿走”的权限。目录的满权限是777(rwxrwxrwx),拿走022的话,剩下755(rwxr-xr-x),755就是掩码为022时的新建目录的默认权限。文件在(用touch命令)新建时默认没有执行权限,文件的满权限是666(rw-rw-rw-),若拿走022,则剩下644(rw-r--r--),644就是掩码为022时的新建文件的默认权限。
新文件可以来自复制,复制时掩码也是起作用的。先确保文件a.h的权限是666:
将a.h复制到b.h,新文件b.h的权限是644(rw-r--r--),被拿走了022:
这里顺便讲一个命令cp的用于保留权限的选项,它是--preserve=mode或者-p,使用--preserve=mode时,新文件的权限将与旧文件一致。例如:
使用选项-p时,新文件的权限及修改时间都与旧文件保持一致。
具体的umask的值与文件及目录的权限的对应关系见表3-3。
umask命令的选项-p用来以数字形式显示掩码,选项-S用来以符号形式显示默认权限,对比一下:(www.xing528.com)
umask等于022时,目录的默认权限为755(rwxr-xr-x),也就是u=rwx,g=rx,o=rx。
设置了掩码,也就控制了文件和目录的默认权限。下面将掩码设为077,看看新建目录和新建文件的默认权限:
可见,掩码设为077之后,新建的目录,只有用户自己能访问,并有写权限,其他账户没有任何权限;新建的文件,只有用户自己有读写权限,其他账户没有任何权限。
如果用户已经将某权限掩码值确定下来,并在一段时间内不变的话,可以将umask命令放入自己主目录下面的.bashrc文件中。比较常用的umask值见表3-4。
本小节前面对掩码的解释并不完全透彻,在复制文件时,掩码的作用是拿走其能够拿走的权限。假设文件x.h的权限是756,掩码仍为022,运行cpx.hy.h之后,y.h的权限是644,对吗?从756中拿走022,即,从7=4+2+1中拿走0,什么也没拿;从5=4+1中拿走2,4+1中没有2,什么也没拿;从6=4+2中拿走2,剩余4,则y.h的权限为754(rwxr-xr--)。看实例:
表3-3 umask值与权限对应关系
表3-4 常用的umask值与相应的权限
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。