二、基本权限ACL
ACL(Access Control List)为访问控制列表。ACL可以设置特定用户或用户组对于一个文件或文件夹的操作权限。
即ACL用于设定某个用户针对文件的权限。
权限的优先级顺序:所有者-->ACL自定义用户-->ACL自定义组-->其他人
1、查看ACL权限:getfacl命令
2、设置ACL权限:setfacl命令
① “-m”参数设置ACL权限
给用户设置ACL权限命令格式:setfacl -m u:用户名:权限 文件名
给组设置ACL权限命令格式: setfacl -m g:组名:权限 文件名
(当使用ll命令查看文件时,权限字符位最后出现“+”,说明该文件含有ACL权限)
② 删除ACL权限
- 删除指定的ACL权限:
命令格式:setfacl -x u:用户名 文件名 # 删除指定用户的ACL权限
setfacl -x g:组名 文件名 # 删除指定组的ACL权限
- 删除所有的ACL权限:
命令格式:setfacl -b 文件名
③ 默认ACL权限(default)
指的是针对父目录而言,新建的文件和子目录会继承父目录的ACL权限。
命令格式:setfacl -m d:u:用户名:权限 -R 文件名
注意:默认权限,只能赋予目录,即命令中的文件名为目录的名称
3、 最大有效权限mask
- 给用户或用户组设定的ACL权限并不是真正的设定权限,而是通过设定的ACL权限与mask权限进行“与”运算后,获得用户的真正权限。
系统默认的mask权限是rwx(一般不需要更改),此时,任何权限与mask权限进行与运算,结果仍是权限本身。
- mask是用来指定最大有效权限。可以理解为:用户和用户组所设定的权限必须在mask权限设定的范围内才能生效。
注意:一般不会去修改系统默认的mask权限,但是能够修改,命令格式如下:
setfacl -m m:权限 文件名
三、高级权限
1、Set UID:SUID权限
SUID权限:在文件(可执行的二进制文件)的所有者属性的x权限位上标志为s时,表示该文件具有SUID权限。
SUID权限的作用是:
拥有可执行文件的执行权限的普通用户,在运行该执行文件的过程时,
暂时获得该执行文件的所有者的权限,执行结束后,释放权限。
SUID权限是在执行的过程中生效。
总结SUID的限制与功能,如下:
- SUID权限仅对二进制程序(binary program)有效
- 执行者对该程序需要具有x的可执行权限
- SUID权限仅在执行该程序的过程中有效(run-time)
- 执行过程中执行者将具有该程序拥有者(owner)的权限
警告:SUID仅可用在可执行程序(binary program)上,不建议用在shell script上;
不能用在目录上。
设置SUID权限的方法:(基本权限的数字表示法前加的4代表SUID权限)
方法一:chmod u+s 文件名 (权限的字符模式,在user处添加s)
方法二:chmod 4755 文件名 (权限的数字模式,在基本权限的数字前加4)
注意:当文件SUID的标志s不是小写而是大写S时,说明无执行权限x,即为空,无效。
取消SUID权限的方法: chmod u-s 文件名
2、Set GID:SGID权限
SGID权限:在文件的所属组的x权限位上标志位s值时,表示该文件具有SGID权限。
SGID权限可以作用于可执行的二进制文件,也可以作用于目录。
A、SGID对于“文件”的含义:(类似于SUID的作用)
-
- 只有可执行的二进制程序才能设置SGID权限
- 执行者对该程序(设置了SGID权限)需要具有x的可执行权限
- 在执行该程序的时候,执行者的所属组会临时变成该程序文件的所属组
- SGID权限只在该程序执行过程中有效,即所属组身份的改变只在执行过程有效
例说明:普通用户执行locate命令(locate命令设置了SGID权限)
B、SGID对于“目录”的含义:(常用的用途)
-
- 普通用户必须对该目录(有SGID权限的目录)具有r与x权限,才能进入该目录
- 普通用户在此目录下的有效群组将会变成该目录的群组
- 用途:若使用者拥有该目录的w权限(写),则使用者在该目录下新建文件后,新建文件的所属组与该目录的所属组相同。
(即拥有SGID权限的目录下,新建的文件的所属组与该目录的所属组是一样的。)
C、设置SGID权限的方法:(基本权限的数字表示法前加的2代表SGID权限)
方法一:chmod g+s 目录名(权限的字符模式,在group处添加s)
方法二:chmod 2755 目录名(权限的数字模式,在基本权限的数字前加2)
注意:当文件SGID的标志s不是小写而是大写S时,说明无执行权限x,即为空,无效。
D、取消SGID权限的方法:chmod g-s 目录名
3、Sticky Bit:SBIT权限
SBIT权限:即粘着位,在目录的其他人的x权限位上标志成 t 值,则该目录具有SBIT权限。
SBIT权限只针对目录有效。
SBIT权限对于“目录”的含义:
- 使用者对于该目录(有SBIT权限的目录)具有w、x权限,即具有写、入权限,
- 使用者在该目录下建立文件或子目录时,只有自己或root能够删除文件或子目录。
通俗的理解是:具有SBIT权限的目录下,只能够对自己建立的文件进行删除、更名、移动等操作,而无法删除他人建立的文件。如系统中的“/tmp/”目录:
设置SBIT权限的方法:(基本权限的数字表示法前加的1代表SBIT权限)
方法一:chmod -R o+t 目录名(权限的字符模式,在other处添加t)
方法二:chmod -R 1755 目录名 (权限的数字模式,在基本权限的数字前加1)
取消SBIT权限的方法:chmod -R o-t 目录名
四、文件隐藏属性
1、隐藏属性
linux系统中文件除了普通rwx权限外,还有一种隐藏权限,如下:
其中,每个位置代表一种隐藏属性,若含有该属性则显示相应字符,如i属性,
若没有该隐藏属性则显示“-”(减号)。
2、常用隐藏属性介绍
3、设置文件隐藏属性:chattr命令
命令格式:chattr + 参数 文件名
“a”参数:增加了“a”属性之后,便不能再使用Vim编辑器写入文本,需要使用echo命令以追加的方式写入。(此属性一般用于日志文件)
echo 内容 >> 文件名 “>>”表示追加
echo 内容 > 文件名 “>”表示覆盖
4、查看文件隐藏属性:lsattr命令
标签:文件,SUID,ACL,Linux,SGID,权限,目录 From: https://www.cnblogs.com/yyz1-/p/17892917.html