Linux特殊权限命令

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.check
3、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选项





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值