文件和目录的普通权限,特殊权限,隐藏权限和acl权限

linux下一切皆是文件,通常情况下,文件主要有以下几个类型且通过不同的字符来区分:
-:普通文件
d:目录文件
l:链接文件
b:块设备文件
c:字符设备文件
p:管道文件
linux下文件或者目录的权限有多种,主要是下面4种,分别为:

一:普通权限:

通常文件和目录具有:
文件:
r (可读):表示文件具有访问权限,可以对文件进行阅读
w(可写):表示文件具有可写的权限,主要包括编辑,新增,删除,修改等权限
x(可执行):表示当文件作为脚本的时候,具有可执行的权限
目录:
r (可读):表示具有可以读取该目录中的文件列表的权限
w(可写):表示具有新增,删除,重命名目录下文件的权限
x(可执行):表示具有进入该目录的权限,cd功能失效
在这里插入图片描述
为了便于记忆,会将r,w,x权限用2进制111表示,所以当文件或者目录具有rwx的权限的时候,代表数字为7,单独分开的话,r:100=4,w:010=2 x:001=1,所以通常r,w,x的权限数字代表分别为4,2,1

二:特殊权限

SUID权限:可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效—仅仅对命令文件有效)对象是命令文件
举例:查看/etc/shadow文件的属性:
在这里插入图片描述
发现所有人都对这个文件没有读写和执行权限,但是为什么在普通用户环境下,用户通过passwd命令可以将修改后的密码信息写入到/etc/shadow/文件中呢?
这是因为给passwd命令的文件/usr/bin/passwd文件设置了SUID权限,让执行命令passwd的普通用户暂时拥有了所属主的权限,因为/etc/shadow文件的所属主是root用户,所以普通用户肯定也就可以将修改密码的信息写入到/etc/shadow文件中去了。
因为SUID权限是针对于命令文件且属于文件所属主的,所以我们可以查看到该文件的属性为:
在这里插入图片描述
原来的x权限变为了s,这个时候就代表这个文件具有SUID权限了,这里需要注意下,当原来文件的所属主权限是rw-的时候会变成rwS,如果是rwx会变成rws。(也就是当文件的所属主位原来拥有x权限,那么添加特殊权限SUID后,x会被换为小写s,如果原来是没有x权限的,会被添加上大写S)

SGID权限:让执行者临时拥有所属组的权限(对拥有执行权限的二进制程序进行设置)
举例:假设现在root创建了一个SGID目录,所属主和基本组是root,现在切换到普通用户ykp-z中,在目录SGID下创建文件456,创建的文件的基本组都ykp-z,当时当给目录SGID设置了SGID权限后,使用其他普通用户创建的文件789的基本组就会继承所在目录的基本组,也就变成了root
未添加SGID命令前:
在这里插入图片描述
添加SGID权限后:
在这里插入图片描述
SBIT权限:该权限的对象也是文件或者目录不过大多数的情况下对象是目录,作用是保护目录中的文件不被其他人进行修改,任何操作都不可以,只能文件的所属主才可以拥有权限去修改。
举例:
在这里插入图片描述
创建一个目录SBIT,里面创建了文件123和文件456,并给目录设置了777权限,现在切换到普通用户下对文件进行操作:
在这里插入图片描述
如上图,虽然普通用户对该目录/SBIT/拥有w权限,但是却无法删除该目录下的文件,那是因为设置了SBIT特殊权限,不仅仅不能删除,其他比如,

三:隐藏权限

linux系统中除了具备一般权限和特殊权限之外,还有一种隐藏权限
设置隐藏权限:
chattr +/-参数 文件
查看文件的隐藏权限
lsattr 文件
-i无法对文件进行修改
-a仅允许对文件进行内容追加,不能对文件内容进行覆盖和删除,不可以直接对文件修改,但是可以通过重定向的方法追加到文件中
举例:给文件测试设置隐藏权限 -i
在这里插入图片描述
解释:给文件ceshi设置-i参数后,直接是没有办法查看到是设置了隐藏权限的,可以通过lsattr命令进行查看,如上图,文件的所属主明明具有w权限,但是却无法删除文件,那是因为我们设置了隐藏权限-i,无法对文件进行修改。如果要去掉隐藏权限,只需要使用chattr -i命令即可。
在这里插入图片描述

四:acl权限

文件的acl权限提供的是所有者,所属组,其他人的读/写/执行权限之外的特殊权限控制,设置的对象是文件或者目录,受益的是用户或者整个组的成员
setfacl 参数 文件名称
通常 -R代表递归,适用于目录,-m参数作用于普通文件,通常acl权限设置对象为目录
举例:如果要查看文件/etc/shadow文件,普通用户是没有这个权限查看的,这个时候就可以添加acl权限给文件/etc/shadow,使普通用户具有查看的权限。如下图:
在这里插入图片描述
如上图:普通用户查看/etc/shadow文件是没有权限的,getfacl命令可以查看目前的acl权限,getfacl 文件名或目录名
在这里插入图片描述
设置acl权限给普通用户ykp-z后,则可以查看/etc/shadow文件中的内容,ykp-z用户也具有对该文件额读权限了,另外设置了facl权限后,目录或者文件属性中的“.”会变成+号,如果要删除acl权限,则只需要:
setfacl -b 文件名/目录名
在这里插入图片描述
acl权限总结:
设置acl命令格式: setfacl -Rm u/g:用户名/组名:rwx 文件名/目录名
删除acl权限:setfacl -b 文件名/目录名
查看acl权限:getfacl 文件名/目录名
总结:
linux下文件或者目录主要有4种属性(权限):
普通权限 r,w ,x,对象是文件或者目录
特殊权限:
SUID:文件所属主 u 对象是:二进制文件,通常情况下为命令文件
SGID:文件所属组 g:二进制文件,通常情况下为命令文件
SBIT:其他人 o :通常作用为目录,保护目录中的文件
隐藏权限:对象通常是文件
acl权限:对象是文件或者目的,受益者为用户或者组。
文件的权限还是蛮杂的,需要多多练习。

Guess you like

Origin blog.csdn.net/weixin_44431280/article/details/104572644