Linux特殊权限命令
1.ACL权限:
文件就三个权限,所有者权限、组权限、其他权限
有时候不够用 这时候就需要ACL权限 用来解决用户身份不够的问题
1.查询acl权限是否开启
dumpe2fs 根分区 dump2fs是查看分区文件的详细信息
【选项 】-h 仅显示超级块中的信息,不现实磁盘块组的信息
如果没有开启acl权限
1> 使用mount 临时开启根分区的acl权限
mount -o remount ,acl /
//重新挂载根分区,加入acl权限
2> 永久开启acl权限,要修改配置文件/etc/fstab
UUID=c2ca6f57-b15c-43ea=bca0-f239083d8bd2 / ext4 defaults,acl 1(#启动是否需要检测) 1(#启动是否需要备份) #加入acl
mount -o remount /
#重新挂载文件系统或重启系统,使修改生效
查看和设定acl权限
getfacl 文件名 // 查看ACL权限
setfacl 【选项】 文件名 //设置ACL权限
-m:设定ACL权限;
-x:删除指定的ACL权限;
-b:删除所有的ACL权限;
-d:设定默认ACL权限;
-k:删除默认ACL权限;
-R:递归设定ACL权限;
当我们的既不能是文件所有者,又不能是文件所属组的成员,又要具有和其他人不一样的权限
使用ACL权限:
将test文件的所有者为jianyin ,所属组为root,权限设为rwx r-x ---
test用户要拥有r-x权限
将test 移动到/home /。如果在/root的家目录下则user不能进入
最大有效权限和删除ACL权限:
mask是用来指定有效权限的,我们赋予用户ACL权限,需要与mask相与才能得到用户的真正权限
设置mask
setfacl -m m:权限
setfacl -x u:user test //删除用户的acl权限
setfacl -x g:user test //删除用户组的acl权限
set facl -b test 删除所有权限
默认权限和递归权限:
递归权限:
递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限。(对已经建立的文件生效)
//
递归只能对目录设置,不能对文件
setfacl -m u:user:rx -R test
默认权限:父目录在设定ACL权限后,所有的子文件和子目录都会继承相同的ACL权限。(对新建立的文件生效)
setfacl -m d:u:user:rx test
sudo权限
操作系统命令的权限
把超级用户的命令赋予普通用户
修改visudo
添加用户以及操作
授权用户可以添加用户
文件特殊权限:
SetUID(SUID)
SetGID (SGID)
Stickey BIT(SBIT)
SUID:
1.只有可执行的二进制文件才能设置可执行权限
2.命令执行者对该文件有执行权限
3.
执行程序时获得该文件属主身份
4.权限只在执行程序过程中有效
ll /etc/shadow #保存密码文件
----------. 1 root root /usr/bin/passwd #只有超级用户才能改这个文件
但为什么自己能改自己的密码呢?
ll /etc/sbin/passwd
-rwsr-xr-x. 1 root root /usr/bin/passwd
这个指令有SetUID权限 执行的时候 自己的身份就会这个文件所有者身份 所以就能改密码了
那执行这条命令时,身份可以修改密码了 ,不就能修改其他用户的密码了吗?
实际上linux限制了 passwd后跟其他参数 会报只有根用户才能指定用户名称的错误
用户只能 passwd 直接回车 修改当前用户的密码
只有文件具有SetUID权限,命令执行时用户身份才会切换到文件所有者的身份 灵魂附体
SetUID权限只在该程序执行过程中有效,也就是说身份改变在程序执行过程中有效
设定SetUID的方法
代表SUID
chmod 4755 文件名
chmod u+s 文件名
u g o
+ + +
s s s
= = =
SUID SGID SBIT
取消SetUID方法
chmod -755 文件名
chmod u-s 文件名
1.SetGID针对文件的作用
只有可执行二进制程序才能设定SGID权限
命令执行者要对该程序拥有x(执行)权限
命令执行执行程序时,组身份升级为该程序文件的属组
SetGID权限只在程序执行过程中有效
例子 、usr/bin/locate具有SetGID身份
2.SetGID针对目录的作用
普通用户必须对此目录必须拥有r和x权限,才能进入此目录
普通用户在此目录中的有效组会变成此目录的属组
若普通用户对此目录拥有w权限,新建的文件的默认属组是这个目录的属组
3.设定SetGID
chmod g+s 文件名
chmod 2755 文件名
4.取消SetGID
chmod g-s 文件名
chmod 0755 文件名
危险的SetUID
1)危险目录应严格控制写权限。比如"/","/usr"等
e.g:
chmod u+s /etc/vi
vi /etc/shadow
这样用户就可以修改密码了
2)用户的密码设置要严格遵守密码三原则(复杂性、易记忆性、时效性)
对系统中默认应该具有SetUID权限的文件作一列表,定时
检查有没有这之外的文件被设置了SetUID权限,参考下面脚本
#!/bin/bash
find / -perm -4000 -o -perm -2000 > /tmp/setuid.check
#搜索系统系统中所有有SUID和SGID的文件,并保存到临时目录中
for i in $(cat /tmp/setuid.check)
#循环去除文件中的文件名
do
grep $i /root/suid.log > /dev/null
#比对这个文件名是否在模板文件中
if[ "$?" != "0" ]
#检测上一个命令的返回值,如果不成功,上面报错
then
echo "$i isn't in listfile!" >> /root/suid_log_$(data+%F)
#如果文件名在模板文件中,则输出错误信息,并把错误写到日志中
fi
done
rm -rf /tmp/setuid.check3、SBIT粘着位作用
普通用户对该目录拥有w和x权限,即普通用户可以在此目录有写入权限
(注意:不建议手工建立拥有粘着位的目录)
如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。
一担赋予了粘着位,除了root可以删除所有文件,普通用户就算有w权限,也只能删除自己建立的文件,
但是不能删除其他用户建立的文件设置粘着位
chmod 1755 目录名
chmod o+t 目录名
取消粘着位
chmod 0777 目录名
chmod o-t 目录名
linux不可改变位权限
chattr权限
选项具体解释
i 文件:文件所有操作都不可以执行
目录:目录不可新建和删除文件,但目录下文件可更改
a 文件:文件只能增加数据(不能用vi,可用“echo xxx >> 文件” 输出重定向),不能修改和删除数据
目录:只能在目录中建立和修改文件,不能删除
lsattr查看chattr属性
查看目录要加-d选项
转载请注明原文地址: https://ju.6miu.com/read-2367.html