Linux中的SUID

本文深入解析了SUID和SGID的概念及其在Linux系统中的应用。SUID允许普通用户以超级用户身份运行特定程序,而SGID则针对组用户进行权限提升。文章通过实例解释了如何设置和理解这两种特殊权限,并探讨了它们可能带来的安全风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SUID是Set UID的简称,翻译过来就是设置用户ID。它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时。
例如,使用如下命令:
ls -l /usr/bin/passwd
我们会得到如下的结果:
-rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd
**

SUID和SGID的详细解析

**
由于SUID和SGID是在执行程序时起作用,而可执行只对普通文件和目录文件有意义,所以设置其他类文件的SUID和SGID位是没有多大意义。
SUID的作用就是让本来没有相应的用户运行这个程序时,可以访问他没有权限访问的资源,passwd就是一个例子。
SUID的优先级比SGID高,当一个可执行程序设置SUID,则SGID会自动变成相应的egid。‘
关于SUID和SGID的编程
和SUID和SGID编程比较密切相关的有以下的头文件和函数:
#include
#include
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查。
SUID/SGID :
假如你有文件a.txt
#ls -l a.txt
-rwxrwxrwx
#chmod 4777 a.txt
-rwsrwxrwx ======>注意s位置
#chmod 2777 a.txt
-rwxrwsrwx ======>注意s位置
#chmod 7777 a.txt
-rwsrwxswt ======>出现了t,t的作用在内存中尽量保存a.txt,节省系统再加载的时间.
现在再看前面设置 SUID/SGID作用:
#cd /sbin
#./lsusb

#su aaa(普通用户)
$./lsusb

是不是现在显示出错?
$su
#chmod 4755 lsusb
#su aaa
$./lsusb
SUID也会出现安全隐患,因为设置了SUID位的程序如果攻击,那么hacker就可以拿到root权限。
因此在安全方面特别要注意那些设置了SuID的程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值