原文链接:
Hello,大家好啊!今天给大家带来一篇关于信创终端操作系统中 SUID 权限机制详解的文章!SUID 是 Linux/Unix 系统中非常重要但又容易被忽视的一项文件权限设置,合理使用可以极大提升系统功能性,而滥用则可能带来严重的安全风险。本文将结合信创环境,全面讲解 SUID 的原理、应用场景、安全注意事项,助力大家掌握这项核心权限机制!欢迎大家分享点赞,点个在看和关注吧!
一、什么是 SUID?
SUID(Set User ID)是 Linux 系统中文件权限的一种特殊设置。
当可执行文件设置了 SUID 位后,任何用户执行这个程序时,都以该文件所有者(通常是 root)的身份运行,而不是自己的身份。
通俗理解:你执行的是文件主人的身份,不是你自己的普通用户身份。
二、如何识别 SUID 文件?
在终端执行,带有 SUID 权限的文件,执行权限(rwx)部分中,x 会被替换为小写 s,比如:
pdsyw@pdsyw-PC:~/Desktop$ ls -ltr /usr/bin/passwd-rwsr-xr-x 1 root root 63736 8月 30 2022 /usr/bin/passwd第四位是 s,表示该文件启用了 SUID
/usr/bin/passwd 是典型例子:普通用户可以修改自己密码,但实际上需要 root 权限去改 /etc/shadow

三、如何设置和取消 SUID?
1.添加 SUID 权限
sudo chmod u+s 文件名sudo chmod u+s /usr/local/bin/pdsyw_binary2.取消 SUID 权限
sudo chmod u-s 文件名四、实战演示(信创终端举例)
场景:普通用户执行一个必须以 root 身份运行的小工具,比如读取 /etc/shadow。
1.编辑工具
pdsyw@pdsyw-PC:~/Desktop$ vim readshadow.cpdsyw@pdsyw-PC:~/Desktop$ cat readshadow.c#include <unistd.h> int main() { execl("/bin/cat", "cat", "/etc/shadow", NULL); return 0;}使用 vim 编辑器,新建一个文件 readshadow.c。
这是一个 C 语言源代码文件,后缀 .c。
这段代码的功能是:调用 /bin/cat 程序,读取 /etc/shadow 文件内容。
execl 是一个系统调用,作用是执行另一个程序,这里是 /bin/cat。
目的:写一个小程序,专门去读取系统敏感文件 /etc/shadow(普通用户平时是没权限读的)。

使用 gcc 编译器,把 readshadow.c 源代码编译成可执行文件 readshadow。
-o readshadow 指定输出的程序名字。
目的:把人类可读的 C 源代码编译成机器能直接执行的二进制程序。

3.设置 SUID 权限
pdsyw@pdsyw-PC:~/Desktop$ sudo chown root:root readshadowpdsyw@pdsyw-PC:~/Desktop$ sudo chmod u+s readshadowpdsyw@pdsyw-PC:~/Desktop$ ls -l readshadow-rwsr-xr-x 1 root root 16424 4月 28 19:06 readshadow把 readshadow 的所有者改成 root。
SUID 机制要求:必须由 root 拥有,否则无效。
给 readshadow 添加 SUID 位(Set User ID)。
让普通用户执行这个程序时,能自动以 root 权限运行。
可以看到文件权限变成了 rwsr-xr-x,s 出现在用户执行位上,表示 SUID 有效。
目的:让这个小工具以 root 身份运行,从而突破普通用户权限限制。

4.测试执行
pdsyw@pdsyw-PC:~/Desktop$ ./readshadow root:*:20060::::::daemon:*:20060::::::bin:*:20060::::::sys:*:20060::::::sync:*:20060::::::直接执行。
结果:成功读取 /etc/shadow 内容!
原因:虽然是普通用户执行,但程序自动获得了 root 权限,因此能够读取 /etc/shadow。

5.取消SUID 权限
pdsyw@pdsyw-PC:~/Desktop$ sudo chmod u-s readshadow去掉 readshadow 的 SUID 位。
这一步是恢复安全设置,防止程序被滥用或留下提权风险。
目的:演示如何手动撤销 SUID,保证系统安全。

6.测试执行
pdsyw@pdsyw-PC:~/Desktop$ ./readshadow cat: /etc/shadow: 权限不够重新运行。
结果变成:权限不够
原因:程序不再自动拥有 root 权限,只能以普通用户身份执行,自然没有权限读 /etc/shadow。

五、SUID 的安全风险
SUID 是双刃剑,主要风险包括:
*风险类型*
*说明*
权限提升
攻击者可通过漏洞提权到 root
信息泄露
无授权访问敏感文件
后门植入
被替换成恶意程序后可持续控制系统
因此必须遵循以下原则:
只为系统必要程序(如 passwd、sudo)保留 SUID
业务自建程序禁止轻易加 SUID
定期审计系统 SUID 文件列表
查看当前所有 SUID 文件:
pdsyw@pdsyw-PC:~/Desktop$ find / -perm -4000 -type f 2>/dev/null
六、信创环境下的实践建议
信创终端通常部署有强化版 PAM 认证、安全审计系统,SUID 文件数量应严格控制
系统运维手册中建议定期审计 /usr/bin/、/usr/sbin/ 等目录的 SUID 文件变更情况
SUID 是 Linux 权限体系中非常有威力的一把双刃剑,掌握其基本原理与操作方法,对于保障信创终端系统安全、合理授权执行环境具有重要意义。掌握了本文内容,你就能:
快速识别系统中的 SUID 程序
正确设置或清除 SUID 权限
了解和防范由 SUID 滥用导致的安全风险!
如果你觉得这篇文章对你有帮助,欢迎点赞、转发、点个在看,我们下次再见!