文件权限
在linux系统中,权限也是一个保证linux系统安全的重要手段,通过赋予不同身份的用户以不同的权限,从而能够达到什么样的身份做什么事情的效果,从而能够大大地提高文件的安全性
文件类型
1.-(普通文件)
linux中最常见的一种文件类型,包括纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件等
2.d(目录文件)
即可以理解成windows里面的一个文件夹
3.b(设备文件)
存储数据以供系统存取的接口设备,简单而言就是硬盘,通常是/dev/sdb1等命名
4.l(链接文件)
链接文件又分为硬链接和软链接。
硬链接相当于给原文件取了个别名,其实两者是同一个文件,删除二者中任何一个,另一个不会消失;
对其中任何一个进行更改,另一个的内容也会随之改变,因为这两个本质上是同一个文件,只是名字不同。
硬链接文件会为其分配inode结点,且删除原目标文件,不会影响链接文件;
软链接文件有点类似于windows里面的快捷方式,软链接文件不会为其分配inode结点,
与原目标共用inode结点,因此删除原目标文件后,会影响软链接文件
5.c(字符设备文件)
即串行端口的接口设备,例如键盘、鼠标
6.p(管道文件)
管道文件主要用于进程间通信
7.s(socket文件)
套接字文件主要用于网络通信,套接字也可以是一台主机上的进程之间的通信
权限类型
文件权限大致有普通的读写执行权限,除此之外,还有特殊的权限如粘滞位等
普通权限
1.读
对于普通文件而言,读意味着可以查看,即能够使用cat或者vim等打开的文件,对于目录文件而言,读意味着可以查看文件夹中的文件有哪些,即可以使用ls命令
2.写(w)
对普通文件(vi/vim/重定向)
对目录文件(cp/mv/rm/touch/vi/vim)
3.执行(x)
对普通文件(作为命令使用)、对文件夹(cd),可执行文件的颜色是绿色的
特殊权限
1.setuid(suid):
该权限是在文件所属者的位置,针对命令和二进制程序的,当普通用户执行某个命令的时候,可以拥有这个命令对应用户的权限,即让普通用户可以以root用户的角色执行程序或命令。
2.setgid(sgid):
该权限在文件所属组的位置,希望一个目录被多个用户(同属于一个组)共享,同一个组的用户可以处理
3.粘滞位(t):
该权限在其他人的位置,把一个文件夹的权限都打开,然后共享文件,像/tmp一样,即便用户对该目录有写入权限,也不能删除该目录中其他用户的文件数据
用户类型
1.文件属主(u)
文件属主位于最前面
2.文件属组(g)
文件属组位于中间位置
3.其他人(o)
位于最后面的位置
4.所有用户(a)
可以看到:
1.文件属性第一列表示文件类型
2.第2-4列表示文件属主的权限
3.第5-7列表示文件属组的权限
4.第8-10表示其他人的权限
5.第11列表示带有“SELinux的安全上下文”。只有开启了SELinux功能的Linux系统才会有这个点。 CentOS7默认是开启SELinux的,所以会有这个点, 如果关闭SELinux,然后再创建文件,新创建的文件就不会再有这个点了, 但是以前创建的文件本来有这个点的还会显示这个点(虽然SELinux不起作用了)。
设置文件权限
+表示增加某个权限,-表示移除某个权限,=表示设置权限为指定内容
1.使用数字形式
可以将权限看成3位二进制数,r权限在最高位,因此用4表示,w在中间位,用2表示,x用1表示,默认情况下是只有3位二进制数,表示没有特殊权限,但若要给文件设置suid、sgid、t权限,则可以用4位数字表示,特殊权限在第最前面,若最前面是1,表示开启了t权限,2表示开启了sgid权限,4表示开启了suid权限。
假设现在有数字6743,则意味着开启了suid和sgid权限。注意,当文件没有执行权限的话,对应位置的特殊权限是小写的,当开启了执行权限的时候,特殊权限的字母才是小写的。文件对应的权限为rwsr-S-wx。
2.使用英文形式
赋予文件属主读写执行的权限
chmod u=rwx test.txt