1.认识权限在Linux中的表示
在Linux中,一切皆文件,而每个文件都会有其相对应的操作权限。那么,我们该怎么来认识他们呢?
首先我们可以看到,在每个test文件的前面都会有一个-rw-r--r--这个字符,而这个字符,就是表示这文件的权限。那他是怎么表示的呢?
从第一个-(这个-代表普通文件)算起,他后面的9个字符可以按三三分开,分别是r w -,r - -,r - -。
他们代表着什么意思呢?
r:表示"可读"
w:表示"可写"
x:表示"可执行"
可是这上面也没有"x"这个字符的出现呀。这就得继续研究下去了。
在上面的字符按三三分开中,我们就拿第一组三个来举例。第一组的三个字符分别是r w -,如果说第一个字符是可读的,那他那里就表示为"r",否则是"-";如果第二个字符表示的是可写的,拿他那里就表示为"w",否则是"-";如果第三个字符表示可执行的,那么那个地方就是"x",否则是"-"。
到这里,我们已经能大概能看懂文件的权限了。那他一个文件,为什么会出现那么多个w和r呢?为什么会按照三三来分组?
三三分组中的第一组的所属者是"user";第二组的所属者是"group",第三组的所属者是"other"。因而又可以读成user的权限是rw-,group的权限是r--,other的权限是r--。
2.权限的修改
我们已经读懂了文件前面的权限,那么我们不妨可以尝试以下修改文件的权限。
修改权限用到一条指令,这条指令叫做"chmod"。
1.第一种修改方式
还是这个图,如果我下给test1.txt的user添加一个"可执行"的权限该怎么做?
指令:chmod u+x test1.txt
我们可以看到,对比修改之前的test1,这里已经给test1加上了"x"的权限。那么由此我们可以得出其它的添加权限或者删掉权限的方法。
给group添加"w"权限。
给other添加"w"和"x"权限。
给other去掉rwx权限。
让所有的所属者去掉所有权限。
2.第二种修改方式
在了解第二种修改方式之前,首先来了解一下权限的二进制形式。
还是按照三三分组,如果在某个字符上有"r" / "w" / "x",则表示为1,否则为0。
因此在框里面的就可以表示为110-110-110,转化成十进制则是6-6-6,这就可以根据输入的数字来进行修改权限了,比较复杂一点,但实用性也是非常高的。
给test1.txt的所有所属者都加上了rw的权限。
给test1.txt的所有所属者加上了rwx的权限。
3.对于文件创建时默认的权限差异
我们在创建目录和普通文件的时候,都会发现前面的权限是不一样的。
这是为什么?
在创建目录和文件的时候,他都会有一个默认的权限是放开的,创建的普通文件,他的默认权限是666,创建一个目录,他的默认权限是777。
而还有一个东西叫做umask,不同的机器的umask是不一样的。这个在最终生成的默认权限中起到了举足轻重的作用。
我们知道,创建一个普通文件,他的默认权限是666,创建一个目录,他的默认权限是777。那对应的写成二进制形式就是110 110 110(这里以普通文件为例),而这边的umask值是0002,转成二进制就是010,给前面补上0就是,000 000 010。
而权限的计算方法就是创建的默认权限&(~umask)的值。