目录
一、普通权限
1、概述
1)权限类型
(1)可读用r表示(read):有了可读权限,就可以读取文件的内容
chmod 444 txt
(2)可写用w表示(write):有了可写权限,就可以在文件中写入或删除内容
chmod 222 txt
(3)可执行用x表示(excute):有了可执行权限,就可以执行该文件,对于目录来讲,x是进入权限
chmod 111 txt
(4)-表示没有某个权限
2)文件访问者的分类
对一个文件或目录,在Lincx中有三种角色
(1) 文件的所有者 : u(user)owner,属主
(2) 文件所有者的所属组 :g(group),属组
(3) 其他用户 :o(others),除属主和不在属主内的用户
(4)全部用户 :a (all)
3)文件类型
在Lincx中,文件有如下几种类型
d : 文件夹
- :普通文件
l : 软链接(类似Windows的快捷方式)
b : 块设备文件 (例如硬盘、光驱等)
p : 管道文件
c : 字符设备文件(例如屏幕等串口设备)
s : 套接口文件
4)文件属性信息
#文件类型#属主权限#属组权限#其他用户权限#硬链接个数#属主#属组#大小#创建日期#时间#文件名
2、普通权限管理命令
1) chmod 命令
改变文件的访问权限,权限的赋予可以使用:+,增加权限;-,删除权限;=,赋予权限
语法:
chmod [options] mode file....
-R 改变目录及目录下的内容的访问权限
(1)字符赋权
(2)数字赋权,属主和数组可读写,其他用户无权限
(3)递归修改目录本身及子目录文件的权限
2)chown 命令
修改文件所有者和组别
语法:
chown [options] user [:group] file .....
-R 递归地修改目录及其下面内容的所有权
(1) 改变属主
(2) 改变属组
(3) 改变属主和数组
(4) 递归修改目录本身及子目录文件的属主与数组
3)umask 命令
显示(root用户为0022,普通用户为0002)或设定文件模式掩码,设定用户文件创建掩码为 MODE 模式。如果省略了 MODE,则打印当前掩码的值;
当设置umask掩码为奇数时,针对文件来说具有了x执行权限,与系统默认文件不具有x执行权相冲突,此时,权限较小则进位,权限较大则减位。
(1) 查看权限掩码
(2) 修改权限掩码,只是临时的,切换shell或重启系统将失效
二、特殊权限
1、概述
在Lincx系统中,我们熟知有rwx三种权限,对应所有者,同组用户,其他用户三种用户的权限,一般而言,这三种权限已经能够满足要求,但是针对一些特殊情况,还需要有三种特殊权限来完善文件权限的管理
2、权限类型
1)SUID权限
应用场景:用户命令临时提权
(1) set UID,第3位上表现为s,对应数字为4
(2) 如果该属主权限上执行权限,则会显示(小写)s
(3)如果该属主权限上没有执行权限,则会显示(大写)S
(4)只要一个命令文件在属主权限位上的x变成s的话,那么其他用户在执行这个命令文件的时候,就会以该命令文件的属主用户身份去执行
(5)suid对二进制可执行程序有效,其他文件或目录无效
2)SGID权限
应用场景:用于文件共享
(1) set GID ,第6位上表现为s,对应数字为2
(2) 如果该属组权限位上有执行权限,则会显示(小写)s
(3) 如果该属主权限上没有执行权限,则会显示(大写)S
(4) SGID改变的是执行者的所属组,可以对可执行文件和目录设置。一般情况下是设置给目录使用的,通过对目录设置SGID属性,可以使得访问在该目录下创建的所有文件的所有权限,都继承原目录的所有者,而非创建者。因为一旦有用户进入到该目录下,由于具有SGID权限,进入目录后的用户就会变成该目录的属组所有者,在该目录下创建的所有文件,都以该目录的所有者的身份创建。
3)SBIT权限
应用场景:保护文件的私有性,防止误删除
(1) SBIT权限同样只对目录有效,在权限位的最低表现位为t,对应数字为1。
(2) 如果该其他用户权限位上有执行权限,则会显示(小写)t。
(3) 如果该其他用户权限上没有执行权限,则会显示(大写)T。
(4) 通过对目录设置SBIT权限,并且该目录的权限为777,则所有用户可以在该目录下都可以创建文件,并且文件所有者是自己。但是在SBID权限的目录下,只有root和文件的所有者才能删除该文件,即使文件的属性为777也不能被其他用户删除。
(4) sticky目录表现在others 的 x 位,用(小写)t 表示,没有执行权限时(大写)T,一个目录即使使得它的权限为“777” ,如果设置了粘滞位,除了目录的属主和“root”用户有权限删除,其它用户都不允许删除。
三、ACL权限
1、概述
读、写、执行权限是用户操作文件、目录的权限。ACL权限也是用户对文件是否有读、写、执行的权限。目录或文件的所有者、所属组、其他人的权限都已经设定,但是如果想要让新用户对文件、目录有不同的权限(不同于所有者、所属组、其他人的权限),为了满足这种特殊的需求,需要对用户单独设置ACL权限。是否支持ACL权限,不是文件支持也不是用户支持,而是文件所在的分区是否支持ACL权限
查看分区ACL权限是否开启dumpe2fs
dumpe2fs -h 分区
2、管理命令
1)setfacl 命令
设置文件访问权限列表,即acl
-m 修改文件的当前ACL
-b 删除所有扩展ACL条目
-R 递归进入子目录
2)getfacl 命令
查看文件的acl
语法:getfacl 【选项】file
-a 仅显示文件的ACL
-d 仅显示文件的默认ACL