关于UNIX下SUID、SGID的解析

Linux中文件特殊权限suid、sgid、sticky(有图详细讲解) 前言 环境:centos 7.9 linux文件普通权限rwx Linux中文件的普通权限一般为:rwx,对应与数字表示:421,除此之外,文件还有三种特殊权限,就这是我们本节要讲的三种特殊文件权限。 linux文件特殊权限 suid、sgid、sticky linux文件的三种特殊权限分别是:suid权限、sgid权限、sticky权限;其中suid权限作用于文件属主,sgid权限作用于属组上,sticky权限作用于other其他上。 suid权限 作用:让普通用户临时拥有该文件的属主的执行权限,suid 阅读详情
关于UNIX下SUID、SGID的解析

    Copyright by kevintz.

    由于用户在UNIX下经常会遇到SUID、SGID的概念,而且SUID和SGID涉及到系

统安全,所以用户也比较关心这个问题。关于SUID、SGID的问题也经常有人提问

,但回答的人一般答得不够详细,加上曾经回答过两个网友的问题,还查了一些

资料,决定整理成本文,以供大家参考。限于本人的水平问题,文章中如果有不

当之处,请广大网友指正。

          一、UNIX下关于文件权限的表示方法和解析

    SUID 是 Set User ID, SGID 是 Set Group ID的意思。

    UNIX下可以用ls -l 命令来看到文件的权限。用ls命令所得到的表示法的格

式是类似这样的:-rwxr-xr-x 。下面解析一下格式所表示的意思。
    这种表示方法一共有十位:
    9 8 7 6 5 4 3 2 1 0
    - r w x r - x r - x
    第9位表示文件类型,可以为p、d、l、s、c、b和-:
        p表示命名管道文件
        d表示目录文件
        l表示符号连接文件
        -表示普通文件
        s表示socket文件
        c表示字符设备文件
        b表示块设备文件
    第8-6位、5-3位、2-0位分别表示文件所有者的权限,同组用户的权限,其

    他用户的权限,其形式为rwx:
        r表示可读,可以读出文件的内容
        w表示可写,可以修改文件的内容
        x表示可执行,可运行这个程序
        没有权限的位置用-表示
    例子:
        ls -l myfile显示为:
        -rwxr-x---   1 foo   staff  7734 Apr 05 17:07 myfile
    表示文件myfile是普通文件,文件的所有者是foo用户,而foo用户属于staf
f
    组,文件只有1个硬连接,长度是7734个字节,最后修改时间4月5日17:07。

    所有者foo对文件有读写执行权限,staff组的成员对文件有读和执行权限,

    其他的用户对这个文件没有权限。
    
    如果一个文件被设置了SUID或SGID位,会分别表现在所有者或同组用户的权

    限的可执行位上。例如:
        1、-rwsr-xr-x 表示SUID和所有者权限中可执行位被设置
        2、-rwSr--r-- 表示SUID被设置,但所有者权限中可执行位没有被设置

        3、-rwxr-sr-x 表示SGID和同组用户权限中可执行位被设置
        4、-rw-r-Sr-- 表示SGID被设置,但同组用户权限中可执行位没有被社

    其实在UNIX的实现中,文件权限用12个二进制位表示,如果该位置上的值是

    1,表示有相应的权限:
    11 10 9 8 7 6 5 4 3 2 1 0
     S  G T r w x r w x r w x
    第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于上面

    的三组rwx位。
                            11 10 9 8 7 6 5 4 3 2 1 0
    上面的-rwsr-xr-x的值为: 1  0 0 1 1 1 1 0 1 1 0 1
          -rw-r-Sr--的值为: 0  1 0 1 1 0 1 0 0 1 0 0 

    给文件加SUID和SUID的命令如下:
    chmod u+s filename   设置SUID位
    chmod u-s filename   去掉SUID设置
    chmod g+s filename   设置SGID位
    chmod g-s filename   去掉SGID设置
    另外一种方法是chmod命令用八进制表示方法的设置。如果明白了前面的12位

权限表示法也很简单。

                 二、SUID和SGID的详细解析

    由于SUID和SGID是在执行程序(程序的可执行位被设置)时起作用,而可执

行位只对普通文件和目录文件有意义,所以设置其他种类文件的SUID和SGID位是

没有多大意义的。
    首先讲普通文件的SUID和SGID的作用。例子:
    如果普通文件myfile是属于foo用户的,是可执行的,现在没设SUID位,ls命

令显示如下:
    -rwxr-xr-x   1 foo   staff  7734 Apr 05 17:07 myfile
    任何用户都可以执行这个程序。UNIX的内核是根据什么来确定一个进程对资

源的访问权限的呢?是这个进程的运行用户的(有效)ID,包括user id和group

 id。用户可以用id命令来查到自己的或其他用户的user id和group id。
    除了一般的user id 和group id外,还有两个称之为effective 的id,就是

有效id,上面的四个id表示为:uid,gid,euid,egid。内核主要是根据euid和

egid来确定进程对资源的访问权限。
    一个进程如果没有SUID或SGID位,则euid=uid egid=gid,分别是运行这个程

序的用户的uid和gid。例如kevin用户的uid和gid分别为204和202,foo用户的ui
d
和gid为200,201,kevin运行myfile程序形成的进程的euid=uid=204,egid=gid
=
202,内核根据这些值来判断进程对资源访问的限制,其实就是kevin用户对资源

访问的权限,和foo没关系。
    如果一个程序设置了SUID,则euid和egid变成被运行的程序的所有者的uid和

gid,例如kevin用户运行myfile,euid=200,egid=201,uid=204,gid=202,则

这个进程具有它的属主foo的资源访问权限。
    SUID的作用就是这样:让本来没有相应权限的用户运行这个程序时,可以访

问他没有权限访问的资源。passwd就是一个很鲜明的例子。
    SUID的优先级比SGID高,当一个可执行程序设置了SUID,则SGID会自动变成

相应的egid。
    下面讨论一个例子:
    UNIX系统有一个/dev/kmem的设备文件,是一个字符设备文件,里面存储了核

心程序要访问的数据,包括用户的口令。所以这个文件不能给一般的用户读写,

权限设为:cr--r-----   1 root     system     2,  1 May 25 1998  kmem
但ps等程序要读这个文件,而ps的权限设置如下:
-r-xr-sr-x   1 bin      system     59346 Apr 05 1998  ps
这是一个设置了SGID的程序,而ps的用户是bin,不是root,所以不能设置SUID来

访问kmem,但大家注意了,bin和root都属于system组,而且ps设置了SGID,一般

用户执行ps,就会获得system组用户的权限,而文件kmem的同组用户的权限是可

读,所以一般用户执行ps就没问题了。但有些人说,为什么不把ps程序设置为
root用户的程序,然后设置SUID位,不也行吗?这的确可以解决问题,但实际中

为什么不这样做呢?因为SGID的风险比SUID小得多,所以出于系统安全的考虑,

应该尽量用SGID代替SUID的程序,如果可能的话。
    下面来说明一下SGID对目录的影响。SUID对目录没有影响。
    如果一个目录设置了SGID位,那么如果任何一个用户对这个目录有写权限的

话,他在这个目录所建立的文件的组都会自动转为这个目录的属主所在的组,而

文件所有者不变,还是属于建立这个文件的用户。
  
                  三、关于SUID和SGID的编程

    和SUID和SGID编程比较密切相关的有以下的头文件和函数:

    #include <sys/types.h>
    #include <unistd.h>

    uid_t getuid(void);

    uid_t geteuid(void);

    gid_t getgid (void);

    gid_t getegid (void);

    int setuid (uid_t UID);

    int setruid (uid_t RUID);

    int seteuid (uid_t EUID);

    int setreuid (uid_t RUID,uid_t EUID);

    int setgid (gid_t GID);

    int setrgid (gid_t RGID);

    int setegid (git_t EGID);

    int setregid (gid_t RGID, gid_t EGID);

    具体这些函数的说明在这里就不详细列出来了,要用到的可以用man查。
【Linux系统进阶详解】Linux12位特殊权限suid,sgid,粘滞位概念、用户应用场景、facl权限及挂载安全案例讲解 Linux 系统中的特殊权限、facl 权限和挂载安全选项是非常重要的安全工具,可以帮助企业更加精细地管理文件和目录的访问和修改权限,以保证文件和目录的安全性和可访问性。在企业安全中,可以使用特殊权限和 facl 权限来进行精细化的访问控制和管理,以保证文件和目录的安全性和可访问性。suid、sgid和粘滞位是Linux系统中的三个特殊权限,它们被称为“特殊权限”,因为它们不同于普通的文件权限位(读、写、执行)。在挂载文件系统时,应该只授予必要的权限,并尽可能地限制用户的访问权限。 阅读详情

相关推荐

CANopen PDO 配置實戰:3步完成0x1800-0x1A00物件字典映射與事件觸發

本文详细解析CANopen PDO配置实战,通过3个关键步骤完成0x1800-0x1A00对象字典映射与事件触发设置。重点介绍COB-ID位域解析、映射参数配置及事件触发优化,帮助工程师实现工业自动化设备间毫秒级实时数据交换,提升系统通信效率。

weixin_33709609的博客 379

linux特殊权限(suid、sgid、sbit)

特殊权限suid、sgid、sbit

m0_71163619的博客 3998

UniApp消息推送进阶:不用插件实现动态语音播报(含保活策略)

本文详细介绍了在UniApp中实现动态语音播报的进阶方案,无需依赖第三方插件。核心采用透传消息传递动态数据,结合本地TTS引擎合成语音,并针对不同安卓厂商提供了深度通道配置与差异化保活策略,有效解决了App退至后台或被清理后语音播报失效的难题。

weixin_29224309的博客 487

Linux的特殊权限(Suid、Sgid、Sbit 详解)

文章目录一、Linux系统特殊权限概述二、suid1、在介绍这个权限之前需要了解一些问题2、SUID 作用详解3、 授权SUID4、SUID总结二、Sgid1、Sgid作用详解2、授权Sgid3、Sgid总结三、sticky bit(沾滞位)1、sticky bit 详解2、授权Sticky bit3、Sticky bit 总结四、总结 一、Linux系统特殊权限概述 在Linux系统中,普通权限我们了解到有r(读)、w(写)、x(执行),这三种权限,但是在我们查看一些其它的文件时,会发现还会有其它权

种一颗树最好的时间是十年前,其次是现在! 9282

利用WI生成无线信道数据

选取DeepMIMO的一个射线追踪场景O1(Outdoor 1)Scenario,工作频率为3.5GHz。有两条街和一个十字路口的户外场景18个基站和超过一百万个用户18个基站(BSs):BS1-BS18.每个基站的高度是8米每个基站的天线阵列是isotropic天线三个统一的x-y用户网格用户的总计数量为:1184923每个用户网格中的第一个用户总是(x,y)坐标最低的用户 所有用户的高度是2m每个用户的每个天线阵列是isotropic天线定义射频追踪场景。

bingbingaidaima的博客 5607

猫耳语音下载(mediadown)

西宾猫耳语音下载工具,能够帮助你下载猫耳音频节目。如果你是会员,它还能帮你下载会员节目。

new_stranger的专栏 2492

关于UNIX和Linux系统下SUID、SGID的解析

如果你对SUID、SGID仍有迷惑可以好好参考一下! Copyright by kevintz. [@more@]由于用户在UNIX下经常会遇到SUID、SGID的概念,而且SUID和SGID涉及到系统安全,所以用户也比较关...

ckomuo086028的博客 1337

2023年数学建模国赛三大赛题核心建模思路与实战代码全解

本文全面解析2023年数学建模国赛三大赛题的核心建模思路与实战代码,涵盖塔式太阳能光热发电系统优化、多波束测深系统动态规划及蔬菜商品化策略建模。通过Python代码示例和优化算法(如遗传算法、NSGA2)展示,帮助参赛者掌握数学建模的关键技术与实战技巧,提升竞赛成绩。

weixin_33713350的博客 334

UNIX下SUID、SGID的解析

关于UNIX下SUID、SGID的解析     Copyright by kevintz.     由于用户在UNIX下经常会遇到SUID、SGID的概念,而且SUID和SGID涉及到系统安全,所以用户也比较关心这个问题。关于SUID、SGID的问题也经常有人提问,但回答的人一般答得不够详细,加上曾经回答过两个网友的问题,还查了一些资料,决定整理成本文,以供大家参考。限于本人的

694

huggingface 镜像站推荐

在做 Ai 应用开发或者学习的时候,我们经常需要下载各种模型,而 huggingface 的模型下载速度很慢或者根本就连不上,这里推荐一个 huggingface 的镜像站,速度很快,可以大大提高我们的效率。

t951984189的博客 1万+

xtop:multi_driven_net与incomplete_timing_cell fail reason 分析

man multi_driven_net”可以得知,这个问题是multi driven结构引起的,使用命令“get_failed_pins -reason multi_driven_net”,获取violation pin。“man incomplete_timing_cell”可以得知,这个fail reason的原因是缺少timing library cell,检查并补全后这个错误就显示了。这里选择的解决方法是修改lib文件,把inout改成input,重新lib2idb。通过这种方法解决了问题。

m0_61544122的博客 567

UNIX和Linux系统下SUID、SGID的解析

由于用户在UNIX下经常会遇到SUID、SGID的概念,而且SUID和SGID涉及到系统安全,所以用户也比较关心这个问题。关于SUID、SGID的问题也经常有人提问,但回答的人一般答得不够详细,加上曾经回答过两个网友的问题,还查了一些资料,决定整理成本文,以供大家参考。限于本人的水平问题,文章中如果有不当之处,请广大网友指正。 一、UNIX下关于文件权限的表示方法和解析 SUID 是 S

非●梵高 698

【49】软考软件设计师——冲刺复盘:高频易错点与应试策略|复盘清单+应试技巧

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第49篇,属于**模块六:冲刺与模拟**终篇,聚焦考前最后阶段的“精准复盘+应试提分”。全文围绕“高频易错点清零、答题时间优化、应急处理落地”三大核心,梳理9大知识领域的典型易错点(附避坑技巧)、优化版答题时间分配(含取舍策略)、考中全场景应急方案,配套可直接使用的“复盘清单”和“应试技巧手册”,帮助考生在最后阶段查漏补缺、固化得分逻辑,避免因低级错误丢分,以“稳、准、快”的状态应对考试。下一篇第50篇(终章)将进行全专栏知识体系回顾、考试策略总结

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 440

关于UNIX/Linux下SUID、SGID的解析

如果你对SUID、SGID仍有迷惑可以好好参考一下! Copyright by kevintz. 由于用户在UNIX下经常会遇到SUID、SGID的概念,而且SUID和SGID涉及到系 统安全,所以用户也比较关心这个问题。关于SUID、SGID的问题也经常有人提问 ,但回答的人一般答得不够详细,加上曾经回答过两个网友的问题,还查了一些 资料,决定整

业精于勤,荒于嬉;行成于思,毁于随 739

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: SUID/SGID补遗
下一篇: [技术]SUID、SGID 详解
lonelycloud
博客等级 码龄23年 1粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值