权限对象
1.文件拥有者(owner): 文件拥有者,也叫做文件的属主,因为Linux是一个多用户,多任务的操作系统,考虑到隐私,安全问题,所以会有这个极为重要的权限。 2.群组(group): 群组为权限中最有用的功能之一,类似于每一个班,每一个学院都是一个群组,群组内的资源是共享的,群组之间是相互隔离的。 3.其他人(others): 既不是文件的拥有者也不属于文件的属组,我们称为其他人。
权限类型
我们可以通过命令ls -al来显示文件的长属性: 其中前边的一串字母表示文件的类型和拥有的权限,后边第一个root代表属主,第二个root代表属组。 Linux的基本权限分为读,写和执行权限(r w x),分别用数组4,2,1来表示。 属主:用户若是文件的主人,则匹配属主的权限,权限在文件的左三位,即第一个rwx。 属组:用户也属组在同一个组,则匹配属组的权限,权限在中三位,即第二个rwx。 其他:若文件既不是属主也不是属组,则匹配其他权限,权限在文件的最后三位,即第三个rwx。 权限组合机制: — 000 0 –x 001 1 -w- 010 2 -wx 011 3 r-- 100 4 r-x 101 5
r.w.x权限说明
对于文件 r权限:可以获取文件的数据 w权限:可以获取文件的数据 x权限:可以将文件运行为进程 对于目录 r权限: 可以使用ls命令获取其下的文件列表 w权限:可以在目录下创建或删除文件 x权限:可以cd到此目录中
文件权限的判断逻辑
删除文件: 判断目录有没有w权限
1、 先判断用户是以什么身份删除文件, ower—>group---->others 2、 判断用户是否为目录的属主。若是使用属主的权限位 看看权限位中有没有w权限 3、 如果不是属主,看是不是目录的属组, 4、 如果不是属主,则判断是不是oter 创建文件 修改文件: 1、先判断以什么身份修改 2、若是属主,判断文件权限的前三位有没有w 3、若是属组,判断文件权限的中三位有没有w 4、若是其他,判断文件权限中的后三位有没有w
进程的安全上下文:
进程对文件的访问权限应用模型:
进程的属主与文件的属主是否相同,如果相同,使用属主权限 否则,检查进程的属主是否与文件的属组相同,如果是,则应用属组权限 否则,只能应用other权限
权限管理命令
chmod [ OPTION] MODE FILE MODE表示法: 赋权表示法:直接操作文件的所有权限位 u= g= o= 例:给文件file的属主用赋权表示法赋予rwx权限
授权表示法:直接操作一类用户的一个权限位 u+,u- g+,g- o+,o- 例:给目录dir的属组用授权表示法加上w权限 chown命令 用来修改文件或目录的属主或属组 例:将文件file的属主修改为Tom chgrp命令: 用来修改文件的属组信息 例:将目录dir的属组更改为Jerry
基础权限ACL
ACL的全程是Access Control List(访问控制列表),一个针对文件/目录的访问控制列表。 ACL作为UGO权限管理的补充,ACL功能: 1.可以针对用户来设置权限 2.可以针对用户组来设置权限 3.子文件/目录继承父目录的权限
设置ACL: getfacl:更方便的查看文件或目录的权限.属主.属组信息
setfacl: 针对用户和组来设定 -m:配置acl权限,不能和x结合使用 -R:递归配置 -d:默认的配置acl权限 对目录有效 而且是对目录下新建的文件或者目录有效 -x:删除acl权限 -b:清空acl权限参数
针对用户设置ACL权限
首先创建一个文件myfile,其属主权限为rw-,然后使用su命令切换到Tom用户,发现无权写入,这是因为文件的属主不是Tom用户,我们就要用到setfacl赋予Tom用户对myfile的写入权限。具体操作如下: setfacl也可以进行权限的继承 这里可以看到权限多了一些default开头的行,这些default权限信息只能在目录上设置,然后会被目录中创建的文件和目录继承。 这里我们可以看到在dir目录下创建的文件mydir和目录dir2都已经继承了他们的父目录dir的权限。
删除,备份及恢复ACL权限
第一步备份ACL权限到文件dir.acl中,之后删除了dir的全部权限,之后用–restore命令将之前备份好的权限恢复回来。
权限掩码umask
在linux下创建一个文件或者目录之后可以通过chmod等命令进行权限设置,来达到给当前用户,用户组用户以及其他用户分配不同的访问权限。那么我们新创建的目录和文件本身也是有它的默认权限,这个默认权限就是由权限掩码umask来确定的。一般默认的权限掩码为0022。
文件的权限:666-umask 目录的权限:777-umask 注意:文件用666去减表示文件默认不能拥有执行权限;如果减得的结果中有执行权限,则需要将其加1。 umask值也可以自己进行设置 例:umask 0044 umask : 032 文件:666-032=633 目录:777-032=745 此类设定仅对当前shell进程有效。
文件特殊权限SUID,SGID,SBIT
SET UID 当s这个标志出现在文件所有者的x权限上时,如/usr/bin/passwd这个文件的权限为:”-rwsr-xr-x“,此时就被成为Set UID,简称SUID。 SUID的作用: 1.SUID权限仅对二进制程序有效; 2.执行者对于该程序需要具有x的可执行权限; 3.本权限仅在执行该程序的过程中有效; 4.执行者将具有该程序拥有者的权限; 如果属主原本有执行权限,显示为小写s;否则,显示为大写S; SET GID 我们将属主上的s权限加到属组的x权限为上,就成为SUID。 注意事项: 1.SGID对二进制程序有用; 2.程序执行者对于该程序来说,需具备x的权限; 3.SGID主要用于在目录身上; sticky Bit(SBIT) SBIT是针对others来设置的,SBIT目前只针对目录有效,作用为:当用户在该目录下建立文件或目录时,仅有自己与root才有权限删除。 最具代表下的就是/tmp目录,任何人都可以在/tmp,内增加,修改文件,但仅有该文件/目录建立者与root能够删除自己的目录或文件。 注:这个SBIT对文件不起作用。 其他用户的执行权限位,若其原本用户有执行权限,显示为小写t;否则,显示为大写T;
SUID/SGID/SBIT权限设置
这个和rwx差不多,一种为字符,一种为数字。 4为SUID=u+s ,2为SGID=g+s , SBIT=o+t。
隐藏属性chattr,lsattr
linux下的文件还有一些隐藏的属性,我们可以用lsattr命令来查看: lsattr aclfile 选项: R:递归显示目录下所有目录和文件的属性 V:显示lsattr程序的版本信息 d:显示目录的属性,而不是目录下的文件属性。 注:文件的隐藏属性只对ext2/ext3/ext4文件系统完整性有效,其他文件系统可能仅支持部分隐藏属性或者根本不支持隐藏属性。 chattr:修改文件隐藏属性 选项: A:文件的access time不可被修改 S:硬盘I/O同步选项 a:设定参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性 i:文件不能被删除,改名,设定链接关系,也不能写入或新增内容,即使是root用户也不行。 只要文件隐藏属性中有i ,root用户也不可删除。
以上为文件权限管理的相关内容,有任何问题欢迎大家在评论区互动。
|