首页 理论教育 LinuxShell编程:权限掩码命令umask

LinuxShell编程:权限掩码命令umask

时间:2023-11-18 理论教育 版权反馈
【摘要】:直接运行umask可以显示当前的掩码值:所谓掩码,简单地说,是一个八进制的三位数,就是从满权限中“拿走”的权限。如果用户已经将某权限掩码值确定下来,并在一段时间内不变的话,可以将umask命令放入自己主目录下面的.bashrc文件中。看实例:表3-3 umask值与权限对应关系表3-4 常用的umask值与相应的权限

LinuxShell编程:权限掩码命令umask

创建一个新目录和一个新文件,它们的初始权限是什么?试一试就知道了:

978-7-111-48202-4-Chapter03-42.jpg

由此可见,目录的权限是755(rwxr-xr-x),文件的权限是644(rw-r--r--)。这是它们的默认权限,这个默认值是可以用内置命令umask设置的。直接运行umask可以显示当前的掩码值:

978-7-111-48202-4-Chapter03-43.jpg

所谓掩码,简单地说,是一个八进制的三位数,就是从满权限中“拿走”的权限。目录的满权限是777(rwxrwxrwx),拿走022的话,剩下755(rwxr-xr-x),755就是掩码为022时的新建目录的默认权限。文件在(用touch命令)新建时默认没有执行权限,文件的满权限是666(rw-rw-rw-),若拿走022,则剩下644(rw-r--r--),644就是掩码为022时的新建文件的默认权限。

新文件可以来自复制,复制时掩码也是起作用的。先确保文件a.h的权限是666:

978-7-111-48202-4-Chapter03-44.jpg

将a.h复制到b.h,新文件b.h的权限是644(rw-r--r--),被拿走了022:

978-7-111-48202-4-Chapter03-45.jpg

这里顺便讲一个命令cp的用于保留权限的选项,它是--preserve=mode或者-p,使用--preserve=mode时,新文件的权限将与旧文件一致。例如:

978-7-111-48202-4-Chapter03-46.jpg

使用选项-p时,新文件的权限及修改时间都与旧文件保持一致。

具体的umask的值与文件及目录的权限的对应关系见表3-3。

umask命令的选项-p用来以数字形式显示掩码,选项-S用来以符号形式显示默认权限,对比一下:(www.xing528.com)

978-7-111-48202-4-Chapter03-47.jpg

umask等于022时,目录的默认权限为755(rwxr-xr-x),也就是u=rwx,g=rx,o=rx。

设置了掩码,也就控制了文件和目录的默认权限。下面将掩码设为077,看看新建目录和新建文件的默认权限:

978-7-111-48202-4-Chapter03-48.jpg

可见,掩码设为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值与权限对应关系

978-7-111-48202-4-Chapter03-49.jpg

表3-4 常用的umask值与相应的权限

978-7-111-48202-4-Chapter03-50.jpg

978-7-111-48202-4-Chapter03-51.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈