美文网首页
Linux权限管理之特殊权限

Linux权限管理之特殊权限

作者: 銭兎孑 | 来源:发表于2017-05-22 11:46 被阅读58次
                                ACL权限
  dumpe2fs -h /dev/sda5
                   -h 仅显示超级块中信息,而不显示磁盘块组的详细信息
  df 查看当前分区

  临时开启分区ACL权限

                      永久开启分区ACL权限

    vi /etc/fstab
    UUID=XXXXX    /    ext4    defaults,acl 1 1

    加入acl
   mount -o remount,acl /
    重新挂载根分区 , 并挂载加入acl权限 使修改生效

    getfacl  文件名  查看acl权限

    setfacl 选项  文件名 设定ACL 权限的命令
                -m 设定ACL 权限
                -x  删除指定的ACL权限
                -b  删除所有的ACL权限
                -d  设定默认ACL权限
                -k  删除默认ACL权限
                -R 递归设定ACL权限

     例:
      setfacl -m u:lw:rx /av
      给用户lw赋予r-x权限,使用“u:用户名:权限”格式

    例:
      setfacl -m g:tgroup2:rwx /av
      为用户组tgroup2 分配ACL权限,使用“g:组名:权限” 格式
    
    例: 
      setfacl -m m:rx 文件名  修改最大有效权限
      设定mask权限r-x 。使用“m:权限” 格式

    例:
      setfacl -x u:用户名 文件名
      删除指定用户的ACL权限
      
    例:
      setfacl -b 文件名
      会删除文件的所有ACL权限

                 最大有效权限 mask
    
    mask是用来指定最大有效权限的,如果我给用户赋予了ACL权限,是需要和mask的权限“相予”才能得到用户的真正权限

                递归ACL权限

    递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限
    递归权限仅能赋予目录,不能赋予文件
    setfacl -m u:用户名:权限 -R 目录名

                默认ACL权限

    默认ACL权限的作用是如果给父目录设定了默认的ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限
    setfacl -m d:u:用户名:权限:目录名

    递归是指对当前目录下已经存在的子文件赋予ACL权限,默认是指对这个目录下以后新建的子文件赋予ACL权限

              sudo权限
  
    root 把本来只能超级用户执行的命令赋予普通用户执行
    sudo的操作对象是系统命令
      
              sudo使用
    
    visudo 实际修改的是 /etc/sudoers 文件
    root             ALL                =     (ALL)                     ALL        
    用户名  被管理主机的地址 =(可使用的身份)      授权命令(绝对路径)
    
     # %where    ALL                         =   (ALL)                ALL
          组名      被管理主机的地址    =   (可使用的身份) 授权命令(绝对路径)

例:
    cdd   ALL =(ALL)    /sbin/shutdown -r now
    赋予普通用户重启权限
    用户执行:
    sudo /sbin/shutdown -r now
 
例:
    cdd   ALL = (ALL)   /usr/sbin/useradd
    cdd   ALL = (ALL)   /usr/bin/passwd  [A-Za-z]*,  !/usr/bin/passwd "",  !/usr/bin/passwd root
    赋予用户添加用户权限
    赋予用户修改密码权限  修改密码时用户名至少要包含字母 , 不允许设置空密码,  不允许给root设置密码

                文件特殊权限
  
  1. SetUID的功能
       1. 只有可以执行的二进制程序才能设定SUID权限
       2. 命令执行者要对改程序用户x(执行)权限
       3. 命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
       4. SetUID 权限只在该程序执行过程中有效,也就是说身份改变只在执行过程中有效

  2. 设定SetUID的方法
        1. 4代表SUID
            chmod  4775 文件名
            chmod  u+s 文件名
            passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码
         
           cat 命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容
  
  3. 取消SetUID的方法
          
          chmod u-s  取消所属者S权限
          chmod 0755 取消所属者S权限
  
  4. 危险的SetUID
          1. 关键目录应严格控制写权限,比如“/”,“/usr”等
          2. 用户的密码设置要严格遵循密码三原则
          3. 对系统中默认应该具有SetUID权限的文件做一个列表,定时检查有没有这个之外的文件被设置了SetUID列表

          find / -perm -400 -o -prem -2000 >suid.log

               扫描系统中有没有新增的suid
  
      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"]
                #检测上一个命令的返回值,如果不为0,证明上一个命令报错
              then
                   echo “$i is not in list file!”>>/root/suid_log_$(date+$F)
                    #如果文件名不在模板当中,则输出错误休息,并把错误信息报错到日志中
              fi
      done
      rm -rf /tmp/setuid.check
       }

                     SetGID
      1. SetGID 针对文件的作用
          1. 只有可执行的二进制程序才能设置SGID权限
          2. 命令执行者要对该陈谷拥有X(执行)权限
          3. 命令执行在执行程序的时候,组身份升级为该程序文件的属组
          4. SetGID 权限同样只在该程序执行过程中生效,也就是说组身份改变只在程序执行过程中有效
  
      例:
          1. /usr/bin/locate 是可执行文件,可赋予SGID
          2. 执行用户lamp对/usr/bin/locate命令拥有执行权限
          3. 执行/usr/bin/locate命令时,组身份会升级为slocate组而slocate组对/var/lib/mlocate/mlocate.db数据库拥有r权限,所以普通用户可以使用locate命令查询mlocate.db数据库
          4. 命令结束,lamp用户的组返回为lamp组

        2. SetUID 针对目录的作用
            1. 普通用户必须针对此目录拥有r和x权限,才能进入此目录
            2. 普通用户在此目录中的有效组会变成此目录的所属组
            3. 若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组

        3. 设定SetGID
            2代表SGID
              chmod 2755 文件名
              chmod g+s  文件名

        4. 取消SetGID
              chmod 0755 文件名
              chmod g-s  文件名

               SBIT粘着位作用
    
       1. 粘着位目前只对目录有效
       2. 普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限
       3. 如果没有粘着位,因为普通用户拥有w权限,所有可以删除目录下所有文件,包括其他用户建立的文件。一但赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己简历的文件,但是不能删除其他用户建立的文件

                设置与取消粘着位
         chmod 1755 目录名
         chmod o+t    目录名
          
                 取消粘着位
        chmod 0777 目录名
        chmod o-t 目录名

                不可改变位权限
      chattr 权限
      
     1. chattr命令格式
          chattr [+-=][选项] 文件或目录名
                      + 增加权限
                      -  删除权限
                      = 等于某权限
    chattr 选项包括 i和a
           a等价于append   i等价于insert

    选项:
        i: 如果丢文件设置i属性,那么不允许对文件进行删除改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件
        a: 如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除

      查看文件系统属性
      lsattr  选项  文件名
        选项: 
              -a 显示所有文件和目录
             -d 若目标是目录,仅列出目录本身的属性,而不是子文件的 

相关文章

网友评论

      本文标题:Linux权限管理之特殊权限

      本文链接:https://www.haomeiwen.com/subject/enebxxtx.html