• Linux特殊权限:SUID、SGID、SBIT


    1、suid

    suid 只对二进制程序有效,执行者对于程序需要有x权限,在程序运行过程中,执行者拥有程序拥有者的权限

    例如:普通用户执行passwd命令。

    a、首先查看passwd命令的绝对路径及passwd命令权限,发现passwd的owner是root,且owner权限里本应是x的那一列显示为s,说明这个命令具有SUID权限。

    b、/bin/passwd的权限是-rwsr-xr-x,普通用户没有w权限,按理普通用户不能执行passwd命令去修改密码文件/etc/shadow,且/etc/shadow的权限是000,只有root有rw权限。

    ps:root用户对所有文件都是有rw权限的,对所有目录都是有rwx权限

    c、因passwd具有suid权限,所以普通用户执行passwd时,系统生成的对应进程,具有/bin/passwd文件拥有者root的权限,所以可以修改密码。如下所示

    2、sgid

    sgid 对于二进制程序有效,执行者对于程序需要有x权限,在程序执行过程中,执行者拥有程序用户组的权限(相当于临时加入了程序的用户组) 

    例如:普通用户使用locate命令

    a、/bin/locate的用户组权限中,应该出现x的位置显示的s,表示这个命令具有SGID权限。而普通用户只有x权限而没有rw权限。

    而locate这个命令,实际上会去访问/var/lib/mlocate/mlocate.db这个文件,查看mlocate.db文件对于普通用户没有任何权限。所以理论上普通用户执行locate命令是不行的。

    b、由于locate命令有SGID权限,所以stack用户运行locate生成进程时,这个进程会得到locate命令的用户组权限,相当于stack被临时加入了用户组slocate,于是就对mlocate.db这个文件有了r权限。

    sgid 对于目录有效,用户对此目录需要有rx权限可以进入目录。用户进入此目录后,有效用户组会变成该目录的用户组,若用户在此目录有w权限,则用户创建的文件用户组与该目录用户组相同

    如下所示

    使用cloud用户,在权限为drwxr-srwx的目录/home/stack/test/,生成文件test.txt,文件的用户组为目录的用户组stack,而不是创建者的用户组cloud

    3、SBIT

    只针对目录有效,当用户对目录拥有wx权限时,用户在该目录创建的文件或目录,只有自己与root才可以删除。

    4、设置和查看SUID/SGID/SBIT权限的方法:

    说明:SUID是4、SGID是2、SBIT是1

    a、增加特殊权限的方法

    b、查看特殊权限的方法,ls即可

    SUID会在所属用户权限本应是x的地方显示s

    SGID会在所属用户组权限本应是x的地方显示s

    SBIT在其它用户权限本应是x的地方显示t

    c、目录取消特殊权限的方法

     chmod 000755 /home/stack/test

     

    d、查找系统中的具有特殊权限的文件和目录

    find / -perm /7000 

  • 相关阅读:
    pytest(二十四)--运行上次失败用例(--if 和 --ff)
    pytest(二十三)--conftest.py作用范围
    pytest(二十二)--fixture的作用范围(scope)
    pytest(二十一)--使用多个fixture和fixture直接互相调用
    pytest(二十)--fixture详细介绍-作为参数传入,error和failed区别
    pytest(十八)--doctest测试框架
    HDU
    Hrbust-1132 水数(排列组合)
    HDU
    UPC-5842 硬币游戏IV(DP)
  • 原文地址:https://www.cnblogs.com/jacob-tian/p/6475887.html
Copyright © 2020-2023  润新知