Linux权限姿势小总结

  • 首先是会读权限:

ls -al的时候,会出来10个字符,可以分为四段:

先说一点,linux下啥都是文件

[d][rwx][rwx][rwx]

第一段是类型,d是目录,-是普通文件,当然还有好多别的(设备啦什么的)
第二段是owner权限,如果没有chown过的话,创建这货的人就是owner,owner的权限看这一段
第三段是group权限,如果没有chgrp或者chown过的话,创建这货的人是哪个组的这个文件的group也就对应哪个组,在这个group内,还不是owner的人,要看这个权限
第四段是other权限如果访问这个文件的人既不是owner,也不是这个文件对应group里面的用户,那就是要看这段权限

  • 然后就是每一段的rwx是啥:

r:read,对于普通文件,就是读取文件内容的权利,对于目录,就是查询目录结构的权利。

w:write,对于普通文件,就是改变文件内容的权利,对于目录,就是改变目录结构的权利(我说过了目录是文件,可以把目录当成一张索引表)。

x:execute,这货就比较特殊,对于普通文件来说,凡是打上x权限的文件,都是可执行文件(这个和windows里面依靠文件类型来区分的机制不一样),对于目录来说,打上x权限的意思是可以进去目录(也就是说即使目录权限是r--,不是r-x,目录也是进不去的,里面的文件不管权限怎么样,也打不开,因为要先进目录再开文件)

  • rwx是三个基本权限,然后还有附加权限三个:

[-][--s][--s][--t]

有时候会像上面那样本来是x的位置变成s或者t了,这个时候说明文件有特别权限

第一个是setuid,这个权限开启与否会显示在owner权限的第3位,如果owner权限有x,显示为s,没有x,显示为S。这个权限的意思是当文件执行时,强行让执行的那个人适用owner的权限(就是说假如这个文件的权限是-rwsr–r–,本来非owner是不能写和执行的,但是因为开了setuid权限,现在谁都可以有写和执行的权利了,因为他们都被当成了文件的owner,用rwx权限)。

第二个是setgid,这个权限只能给目录开,显示在group权限的第三位,有x为s,没x为S。这个setgid的意思就是在这个目录下创建文件的话,不管是谁创建的,新建的文件的group都会被强行设为这个目录的group

第三个是sticky bit,显示在other权限的第三位,有x为t,没x为T。这个权限就是不让删除的意思,防删标记。有一些-rwxrwxrwx的文件比较重要又怕手滑的话可以开这个权限。
该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件.

  • 到这里关于权限本身的简单的东西基本都有了,然后就是chmod怎么用的问题:

chmod [权限][文件]

这个[权限]的写法有一种比较简单的方式就是数字表示法:

这里把权限分为四组:[特殊][owner][group][other]

对于后三组,如果开r权限,就算4,开w权限,就算2,开x权限,就算1(特殊权限都在第四组开,前三组只负责rwx),其实就是三个二进制位啦,把每一组的权限对应的数字加起来,就是这一组的权限,然后按着顺序把三个组权限都写出来就ok了。
举个例子:rwxr--rw-,翻译完就是7(4+2+1)4(4)6(4+2),chmod 0746 [文件]之后这个文件的权限就是rwxr--rw-了。

第一组如果开setuid,就算4,开setgid就算2,开sticky bit就算1,相加填到第四位上就行。

注意,后三位一定要都给出,第一位没有需要的话,可以不给出,只给三位的话默认就是没有特殊权限.

 

 

Leave a Reply

Scroll to top