美文网首页
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