Linux下目录权限的详解
对于linux初学者来说,Linux下的权限是比较难理解得知识点了,对于Linux的高级权限SUID,SGID和SBID更加难理解,接下来我就给大家一步一步详细讲解文件权限。
一.普通权限(r,w,x)
1.对于普通文件来说,如下图
- 文件需要有写权限的话,就必须赋予它w权限
- 文件需要有读权限的话,只需要r权限即可,r权限表示可以读取文件的内容
- 如果需要有执行权限的话,这儿就需要注意了, 不仅需要有x权限,还需要有r权限,这样才能对文件具有执行的权限,很多人不明白这一点
- 还需要注意就是,对于root用户来说,不管对文件具有什么权限,都可以执行任何权限
- 对于普通用户来说,即使文件所属主是自己,但是没有权限照样不能读写文件,同样需要赋予相应的权限才能操作文件
2. 对于目录来说
1. r权限仅仅代表用户能够看见目录
2. 要想查看目录中的文件,还需要具有x权限,所以文件的x权限表示能够进入目录(和文件不一样,目录没有执行的说法)
3. w权限表示能够在目录下新建文件
二. Linux下的高级权限 SUID,SGID和SBID
讲完了linux文件和目录的基本权限,接下来给大家介绍一下linux下的文件高级权限
SUID(set user id),suid一般用于执行文件,当其他用户对文件具有可执行权限时,如果该文件具有suid权限(user的x权限变为s或者S),那么该用户运行该文件,实际上是以文件所有者的身份在运行文件,如下所示
对于suid.sh 文件,所属组具有执行权限,其他用户也具有执行权限,而且在它自己的执行权限x处,显示的是s。所以,当用户运行该文件时,实际上是以文件所有者(在这儿是root)的身份在运行该文件。2.SGID(set group id),suid一般用于目录,当用户对该目录具有所有权限时,如果再具有SGID权限的话,此时,如果用户在该目录下创建文件,那么创建的文件的所属组将是该目录的所属组,但还是归创建者用户所有。如下所示
组用户的执行权限x处,现在显示的是s(s代表组用户有x权限,S代表组用户没有x权限,s和S是为了区分所属用户的x权限),表示该文件具有sgid权限,所以所有用户在sgid目录下,都具有创建文件的权限,那么文件所属组都是sgid文件的所属组(在这儿是root组),但有一个问题就是,用户可以删除其他用户新建的文件,为了解决这个问题,我们接下来看sbit权限- SBIT权限(sticky bit粘滞位),同样的,SBIT权限时在other用户的x执行权限上加了一个t或者T(t和T与上面的s和S的区别相同),如果用户对该文件具有所有权限(r,w,x),而且具有sbit(在other的x权限处为t时)权限,那么该用户就可以在这个文件夹中(图中是sbit文件夹)新建文件,不同用户都能够读取别人的文件,但是不能删除别人的文件。如下图
其他用户可以进入sbit中,新建文件,能够访问别人的文件,但是不能删除别人的文件。
总结,suid的权限时是4,sgid的权限是2,sbit的权限是1
- 给文件赋予suid权限
chmod 4755 suid //直接把4放到最前面即可,后面三位权限就是普通权限
给目录赋予sgid权限
chmod 2777 sgid
给目录赋予sbit权限
chmod 1777 sbit