Linux获取最终权限说明
由于Linux权限的特性,当我们要分享自己的文件时,一般文件都要修改权限以适合其他用户的使用。在Linux系统中创建一个文件和创建一个目录所获得的最终权限是不相同的。Linux文件的最终权限与umask默认权限有关,它指的是用户创建文件或目录时的权限默认值。获得一个用户当前环境下的默认权限值,在命令行下直接输入umask命令即可。如图2-42所示
由于不同的用户其umask值不同,所以他们创建的文件和目录的最终权限也不相同,如图2-43所示
解释:普通用户的umask值是0002,而root用户的umask值是0022,一般要四个数字来表示权限,最前面的“0”与特殊权限有关,由于特殊权限本节还不讨论,所以普通用户的umask值只考虑002,root用户的umask的值为022。普通用户创建文件后的最终权限是“rw-rw-r–”,root用户创建文件后的最终权限是“rw-r–r–”。普通用户创建目录的最终权限是“rwxrwxr-x”,root用户创建目录的最终权限是“rwxr-xr-x”。很明显就是不一样的,造成这样的区别就是umask默认权限值的不同,因此修改了默认权限值后产生的最终权限也会不同。如图2-44所示
到此,可能有些人会提问它的工作机制如何?文件和目录的最终权限是如何产生的?对于一个文件来说文件主要是用来保存数据,不需要执行它(没有“x”权限),而目录需要提供给其他人使用是需要执行(“x”)权限的
补充知识:权限除了可以使用符号表示外也可以用数字来表示。符号表示就是read(r读)、write(w写)、execute(x执行),对应的数字表示法就是r=4,w=2,x=1。因此,对于文件来说它的权限就需要“rw-rw-rw-”即可,用数字来表示就是“666”,而目录由于需要x执行权限,因此,它的权限是“rwxrwxrwx”,用数字来表示就是“777”
那么文件的默认权限“666”和目录的“777”权限如何与umask默认权限值发生作用而产生上述创建文件和目录时的最终权限?它就是使用umask的值来把不需要的权限遮挡起来,这种说法是正确的。(而有的作者说成是减去umask的值,或者进行与运算等得到结果,在有些情况下,是适合的,但是不是十分正确的方法。正确的方法,如图2-45所示
红方框内的umask默认权限的其他用户权限“w”,把文件和目录的默认其他用户的权限“w”那个位置的权限遮挡起来,而其他位都是“-”,没有被遮挡起来,所以最终权限就是把文件和目录的默认其他用户的“w”权限拿掉即可
同理,如果用户的umask默认权限改变为“— -wx –wx(033)”,由于文件和目录的默认权限分别为“rw- rw- rw-(666)”和“rwx rwx rwx(777)”,所以文件的同组用户的权限“w-”被遮挡起来,其他人的“w-”权限也被遮挡起来,所以文件的最终权限是“rw- r– r–(664) ”,而目录的同组用户和其他人的权限“wx”被遮挡起来,所以目录的最终权限是“rwx r– r–(744)”。修改umask的默认值后文件的最终权限如图2-44所示
root用户的umask默认权限值是“— -w- -w- (022)”,所以它产生的文件和目录的最终权限只是把同组用户和其他人的“w”权限拿掉即可,其它的权限位不变。因此,root用户的文件和目录最终权限分别是“rw- r— r–(644)”“rwx r-x r-x(755)”。如下图2-46所示
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?