1、ACL权限的简介与开启
Linux权限只有所属者,所属组和其他人,身份权限不够用,但是ACL权限可以解决这个问题,具体做法是找到这个人的id,赋予其权限即可。
查看分区的ACL权限是否开启:
dumpe2fs -h /dev/sda3
#dumpe2fs命令是查询指定分区详细文件系统信息的命令
#-h选项:仅仅显示超级块中信息,而不显示磁盘块组的详细信息。
默认挂载选项:
临时分区开启ACL权限:
mount -o remount,acl /
#重新挂载根分区,并挂载加入acl权限
永久开启分区ACL权限:
vi /etc/fstab
#加入ACL权限
mount -o remount /
#重新挂载文件系统或者重启系统,使得修改生效
查看ACL命令:
getfacle 文件名
#查看ACL权限
设定ACL权限的命令:
setafacl 【选项】 文件名
-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设定默认的ACL权限
-k 删除默认的ACL权限
-R 递归设定ACL权限
在根下建立工程目录,建立用户和组,添加用户到组
setfacl -m u st:rx /project/
#给用户st赋予r-x权限,使用“u:用户名:权限”格式
最大有效权限mask
mask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask权限“相与”才能得到用户的真正权限
修改最大有效权限
setfacl -m m:rx 文件名
#设定mask权限为r-x。使用“m:权限”格式
删除ACL权限:
setfacl -x u 用户名 文件名
#删除指定用户的ACL权限
setfacl -x g:组名 文件名
#删除指定用户组的ACL权限
setfacl -b 文件名
#会删除文件的所有acl权限
递归ACL权限:
递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限
setfacl -m u:用户名:权限-R 文件名
+ 是赋予了其他权限
默认的ACL权限
默认的ACL权限的作用是如果给父目录设定了默认的ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限。
setfacl -m d:u用户名:权限 文件名
#只是针对于新的用户才确定的,已经确定的文件不能赋予其权限
2、文件特殊权限
1、SetUID
功能:
1、只有可执行的二进制程序才能设定SUID权限
2、命令执行者要对该程序拥有x(执行)权限
3、命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
4、SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
passwd命令拥有SetUID权限,所有普通用户可以修改自己的密码。
usr/bin/passwd
cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容
ll /bin/cat
设定SetUID的方法
4代表SUID
chmod 4755 文件名
chmod u+s文件名
含义:
1代表着SBIT权限
2代表着SGID权限
4代表着SUID权限
1+2+4=7代表者SUID SGID SBIT不过并没有意义 针对的操作对象不一样
change mod 改变权限是方式
取消SetUID的方法
chmod 755 文件名
chmod u-s 文件名
S是报错,没有符合suid的执行权限
切换为普通用户:
只要是给vim设置了suid,那么切换为普通用户可以把配置文件普通用户id修改为0,普通用户成为了超级用户