zoukankan      html  css  js  c++  java
  • linux 文件的特殊权限:suid sgid sticky

    一.关于文件的特殊权限

    1.文件与目录设置不止基础权限:r,w,x,还有所谓的特殊权限。特殊权限会拥有一些“特权”。特殊权限为:suid sgid sticky

    2.文件的特殊权限:suid sgid sticky

    • ​ SUID(set uid设置用户ID):限定:只能设置在二进制可执行程序上面。对目录设置无效。功能:程序运行时的权限从执行者变成程序所有者的权限
    • ​ SGID:限定:既可以给二进制可执行程序设置,也可以对目录设置。功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的所属组
    • ​ Stickybit:粘滞位权限是针对目录的,对文件无效,也叫防删除位

    3.这3个特殊权限对应的数值为

    SUID SGID Stickybit
    u+s或u=4 g+s或g=2 o+t或o=1

    二.suid

    1.SUID属性一般用在可执行文件上,当用户执行该文件时,会临时拥有该执行文件的所有者权限。使用”ls -l” 或者”ll” 命令浏览文件时,如果可执行文件所有者权限的第三位是一个小写的”s”,就表明该执行文件拥有SUID属性。比如/usr/bin/passwd文件

    [elk@node5 ~]$ which passwd
    /bin/passwd
    
    [elk@node5 ~]$ whereis passwd
    passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz
     
    [elk@node5 ~]$ ll /bin/passwd 
    -rwsr-xr-x. 1 root root 27832 Jun 10  2014 /bin/passwd
    
    [elk@node5 ~]$ ll /usr/bin/passwd 
    -rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd
    

    2.普通用户elk,没有对shadow文件写入的权限, 但是elk用户使用passwd修改自己密码时,可以修改shadow文件中的内容,这是什么原因?

    [root@node5 ~]# ll /etc/shadow
    ----------. 1 root root 1179 9月  19 2017 /etc/shadow
    [root@node5 ~]# su - mk
    上一次登录:二 5月  8 21:07:24 CST 2018pts/0 上
    [elk@node5 ~]$ passwd 
    
    [root@node5 ~]# vim /etc/shadow  #查看shadow文件已经被elk用户修改成功。
    

    因为mk用户执行passwd命令时,权限会提升成root用户,所以可以修改成功。

    3.给less命令添加suid权限

    [elk@node5 ~]$ which less
    /bin/less
    [elk@node5 ~]$ ll /bin/less
    -rwxr-xr-x. 1 root root 158240 Jul 31  2015 /bin/less
    
    [elk@node5 ~]$ ll /etc/shadow
    ---------- 1 root root 1242 Oct 14 02:20 /etc/shadow
    
    [elk@node5 ~]$ less /etc/shadow
    /etc/shadow: Permission denied
    
    [elk@node5 ~]$ exit
    logout
    [root@node5 ~]# chmod u+s /bin/less
    
    [root@node5 ~]# su - elk
    Last login: Thu Oct 15 11:39:37 CST 2020 on pts/3
    
    [elk@node5 ~]$ less /etc/shadow
    tss:!!:18341::::::
    postgres:$6$W/xWXomt$Vry4J0aBsW4EyiMDW90kfzi45lAWKeYwBPBJzdiX3Yj1twH6zn7D9cG8PJXAMhcwTaIiuJNZxCtLFh/Ht6CwK/:18365::::::
    esnode:$6$fznP2Oqd$02x2dTMV0kP5Ra780.sw.W06KZVl7ua8sA7QBMfEsYp0iUs1ukz.9H/iqYjToLLLa1TPSGWDC6a8yVJFZCVV5/:18378:0:99999:7:::
    elk:$6$An7lKn2Q$dSuliu1h.Wn42GsrRwKPDS6bgEmTR8TlMsWMHIVWIEXOVbsKwvBcKDDNv.Mxki7aOwV8EBASQFAGQ9W.N/LeV.:18548:0:99999:7:::
    logstash:$6$9yY5A65j$YzViQt8dC7mb9ID4my1x1o2dZX3ovQbTfsMr3f5UaJkt3THQRMOmt0pq2YIN0W.zlyU/hRlZe.9vocyFepTYl1:18548:0:99999:7:::
    
    #执行less命令的时候,用户权限提升到了root权限
    [root@node5 ~]# ps -ef | grep less
    root      68019  67976  0 14:57 pts/3    00:00:00 less /etc/shadow
    root      68034  58078  0 14:57 pts/5    00:00:00 grep --color=auto less
    
    [elk@node5 ~]$ ll /bin/less
    -rwsr-xr-x. 1 root root 158240 Jul 31  2015 /bin/less
    
    [elk@node5 ~]$ exit
    logout
    
    [root@node5 ~]# chmod u-s /bin/less
    
    [root@node5 ~]# ll /bin/less
    -rwxr-xr-x. 1 root root 158240 Jul 31  2015 /bin/less
    
    [root@node5 ~]# chmod 4755 /bin/less
    
    [root@node5 ~]# ll /bin/less
    -rwsr-xr-x. 1 root root 158240 Jul 31  2015 /bin/less
     
    [root@node5 ~]# chmod u-s /bin/less
    
    [root@node5 ~]# ll /bin/less
    -rwxr-xr-x. 1 root root 158240 Jul 31  2015 /bin/less
    

    另外:chmod 4755 /usr/bin/less # 等同于 chmod u+s /usr/bin/less

    三.SGID

    1.SGID既可以给二进制可执行程序设置,也可以给目录设置。
    2.SGID的功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的权限。

    [root@node5 ~]# mkdir ceshi
    
    [root@node5 ~]# ll -d ceshi
    drwxr-xr-x 2 root root 6 Oct 15 15:10 ceshi
    
    [root@node5 ~]# chmod g+s ceshi
    
    [root@node5 ~]# !ll
    ll -d ceshi
    drwxr-sr-x 2 root root 6 Oct 15 15:10 ceshi
    
    [root@node5 ~]# chown :elk ceshi
    
    [root@node5 ~]# !ll
    ll -d ceshi
    drwxr-sr-x 2 root elk 6 Oct 15 15:10 ceshi
    
    [root@node5 ~]# touch ceshi/ceshi.txt
    
    [root@node5 ~]# ll ceshi/ceshi.txt 
    -rw-r--r-- 1 root elk 0 Oct 15 15:12 ceshi/ceshi.txt
    

    四.Stickybit

    1.Stickybit只作用于目录。
    2.Stickybit的功能:目录下创建的文件只有root、文件创建者、目录所有者才能删除。

    3.Stickybit的用法:chmod o+t /tmp/test/

    4.例: 系统中的tmp目录就是这样

    [root@node5 ~]# ll -d /tmp
    drwxrwxrwt. 10 root root 4096 Oct 15 10:12 /tmp
    
  • 相关阅读:
    代码审查如何做
    使用 Gitbook 打造你的电子书
    Ztree的简单使用和后台交互的写法(一)
    ORACLE 错误:oralce record is locked by another user
    easyUI增加视图分组的办法
    jquery 解析数据库中的json日期为正常的格式
    Bootstrap基本类和组件学习二
    bootstrap的学习-基础样式和排版一
    easyUI中tree的简单使用
    orancle的安装和配置
  • 原文地址:https://www.cnblogs.com/renshengdezheli/p/13948747.html
Copyright © 2011-2022 走看看