1.ACL权限
1.1ACL权限简介与开启
所有者、所属组和其他人的权限不够用,专门为用户设定独立的权限
#查看分区ACL权限是否开启
dumpe2fs -h /dev/sda3
如下图:蓝框就表示该分区具有acl权限
#临时开启分区ACL权限
mount -o remount,acl / #重新挂载根分区,并加入acl权限#
#永久开启ACL权限
修改/etc/fsatb 在对应的分区options那一列加上【,acl】
注意:ACL权限一般Linux都会默认开启,即不用设定
1.2 查看与设定ACL权限
#设定acl权限
setfacl 选项 文件名
-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设定默认的ACL权限
-k 删除默认的ACL权限
-R 递归设定ACL权限
例如:setfacl -m u:test:rx /project #给用户st单独赋予rx权限
setfacl -m g:group2:rx /project #给组group2分配acl权限
# 查看acl权限
getfacle 文件名
示例如下
如图,对project目录设定acl权限后,权限一列后多了个+号,且getfacl查询,发现对test用户有单独的r和x权限,如红框所示。
1.3最大有限权限与删除acl权限
mask权限是用来指定最大有效权限的。如果给用户赋予了acl权限,需要与mask权限相“与”才能得到用户的真正权限。mask权限可通过getfacl查询,如上图中的mask一行。目的是防止给用户权限过高。
#设定mask权限为rx
setfacl -m m:rx 文件名
#删除acl权限
setfacl -x u:用户名 文件名 #删除指定用户的acl权限
setfacl -b 文件名 ##删除文件所有的acl权限
1.4 默认ACL权限和递归ACL权限
递归是父目录在设定ACL权限时,所有子文件和子目录也会拥有相同的acl权限。
# 设定递归文件夹的acl权限
setfacl -m u:用户名:权限 -R 文件夹 #加选项-R
默认是给文件夹设定默认的acl权限后,新建的子文件都会继承默认的acl权限
#设定默认的acl权限
setfacl -m d:u:用户名:权限 文件夹
2.文件特殊权限
2.1 SetUID
SetUID功能:命令执行者在执行二进制程序时可以获取该程序的所有者身份,SetUID权限只在程序执行过程中有效
例如:passwd命令就拥有SetUID权限,普通用户在执行passwd命令时就当root用户执行passwd
如上图,所有者的可执行权限变为s,且文件标红色。
#设定SetUID方法
chmod 4755 可执行程序 #4代表SUID,第一位表示特殊权限,后面为所有者、所属组、其他人权限
chmod u+s 可执行程序
# 取消SUID权限
chmod 755 可执行程序
chmod u-s 可执行程序
如下图,对abc文件设定和取消SUID权限
注意:(1)一定要是可执行文件或者脚本;(2)命令执行者要对其有可执行权限,否则SUID权限增加不成功。
2.2 SetGID
SetGID功能:
针对文件:
命令执行者在执行程序时,组身份升级为该程序文件的属组,SetGID权限只在程序执行过程中有效,即组身份改变只在程序执行过程中有效。
针对目录:
普通用户必须对此目录有r和x权限,才能进入此目录;
普通用户在此目录中的有效组会变成此目录的属组;
若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组。
#设定SetGID方法
chmod 2755 可执行程序或目录 #2代表SGID
chmod g+s 可执行程序或目录
# 取消SUID权限
chmod 755 可执行程序或目录
chmod g-s 可执行程序或目录
例如:
在/tmp/test目录拥有SGID权限后, 用sc用户在/tmp/test目录中创建新文件,所属组本该是sc,但是由于SGID权限,创建后的新文件所属组是root。
2.3 Sticky BIT
粘着位作用:
要求:仅对目录有效,且普通用户对此目录有w和x权限,即普通用户可以在此目录拥有写入权限;
如果没有粘着位,普通用户拥有w权限,可以删除此目录下的所有文件,一旦有粘着位,只有root可以删除所有文件,普通用户只能删除自己建立的文件,但是不能删除其他用户建立的文件。
例如:/tmp文件夹
即在tmp目录下,只允许用户删除自己建立的文件。
#设置粘着位权限
chmod 1755 目录名 #1代表粘着位权限
chmod o+t 目录名
#取消SUID权限
chmod 755 目录名
chmod o-t 目录名
3. 文件系统属性chattr权限
#设置文件系统属性
chattr [+-=] [选项] 文件或目录名
i:如果对文件设置i属性,不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那只能修改目录下文件的数据,但不允许建立和删除文件
a:如果对文件设置a属性,那只能在文件追加数据,但不能删除也不能修改数据;如果对目录设置a属性,那只能在目录中建立和修改文件,但是不允许删除
注意:该命令对root用户也有效
#查看文件系统属性
lsattr 选项 文件名
-a 显示所有文件和目录
-d 若是目录,仅列出目录本身的属性
例如:对abc文件设置i属性,设置完后不可写入数据,也不可能删除
对test1文件夹设置i属性,设置后不可在test1文件夹内新建和删除文件,只能修改原有文件数据
4.系统命令sudo权限
#sudo使用
visudo
#实际修改的是/etc/sudoers文件 man 5 sudoers 可查询souders文档
root ALL=(ALL) ALL
用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
例如:授权test用户可以重启
则在root ALL=(ALL) ALL下增加
test ALL=/sbin/shutdown -r now
#普通用户执行sudo赋予的命令
sudo -l #查看可用的sudo命令
sudo /sbin/shutdown -r now #普通用户执行sudo赋予的命令
注意:命令格式要严格按照sudo + visudo中增加的/sbin/shutdown -r now命令格式,否则无法执行