讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux怎么设置SUID和SGID权限_Linux特殊权限位配置方法教程【进阶】

大杰姑娘_7000

大杰姑娘_7000

发布时间:2026-03-31 17:32:31

|

731人浏览过

|

来源于php中文网

原创

必须正确配置SUID(4)或SGID(2)权限位以实现临时提权:可用数字模式(如chmod 4755)或符号模式(如chmod u+s)设置,需验证权限显示为小写s、测试二进制程序实际切换euid/egid,并排除脚本无效、noexec挂载、SELinux限制等常见失效原因。

linux怎么设置suid和sgid权限_linux特殊权限位配置方法教程【进阶】

如果您需要让普通用户在执行特定程序时临时获得文件所有者或所属组的权限,则必须正确配置SUID或SGID特殊权限位。以下是多种可行的配置方法:

一、使用数字模式设置SUID和SGID

数字模式通过在标准三位八进制权限前添加特定位数值实现:SUID对应4,SGID对应2。该方式直接、明确,适用于脚本批量操作或权限精确控制场景。

1、为可执行文件设置SUID权限:执行chmod 4755 /path/to/executable,使文件权限变为-rwsr-xr-x。

2、为可执行文件同时设置SUID和SGID权限:执行chmod 6755 /path/to/executable,使文件权限变为-rwsr-sr-x。

3、为目录设置SGID权限:执行chmod 2775 /shared/dir,确保新创建的文件自动继承目录所属组。

4、验证设置是否生效:运行ls -l /path/to/target,检查属主或属组执行位是否显示为小写s;若显示大写S,说明对应位置无执行权限,SUID/SGID实际无效。

二、使用符号模式设置SUID和SGID

符号模式通过字符指令动态增删权限,不依赖当前权限值,避免覆盖误操作,适合交互式环境下的精细调整。

1、为文件添加SUID位:执行chmod u+s /usr/local/bin/custom-tool。

2、为文件添加SGID位:执行chmod g+s /usr/local/bin/group-helper。

3、为目录添加SGID位:执行chmod g+s /var/www/html/uploads,使该目录下新建文件归属自动设为目录所属组。

4、撤销SUID位:执行chmod u-s /path/to/file;撤销SGID位:执行chmod g-s /path/to/file_or_dir。

5、确认结果:运行stat -c "%A %U:%G %n" /path/to/target,比ls -l更可靠地识别权限位状态,排除大小写歧义。

三、验证SUID/SGID实际运行效果

设置完成后必须验证权限是否在进程执行时真实切换,仅看文件权限显示不足以确认功能生效,因内核策略可能拦截(如对Shell脚本丢弃SUID)。

1、编写测试程序(C语言):创建一个调用seteuid(getpwnam("root")->pw_uid)的二进制,编译后设chmod 4755。

2、在程序中插入printf("real uid=%d, effective uid=%d\n", getuid(), geteuid());输出调试信息。

3、以普通用户身份运行该程序,观察输出中effective uid是否等于root的UID(通常为0)。

4、对SGID验证:运行id -u; id -g; id -G对比进程有效GID与文件属组GID,确认getegid()返回值匹配。

5、注意:Shell脚本即使显示rwsr-xr-x,执行时仍以当前用户身份运行,SUID无效;必须使用编译后的二进制才能触发内核级UID/GID切换。

四、强制确保SUID/SGID不被umask干扰

umask影响新建文件默认权限,但不影响已设置的SUID/SGID位本身;不过SGID对目录的作用效果受umask制约,尤其影响新文件的组读写权限。

1、检查当前umask值:执行umask,典型输出为0002或0022。

2、若需SGID目录中新文件默认具备组写权限,应确保umask的组位为0,例如umask 0002使新建文件权限为664而非644。

3、临时修改umask:执行umask 0002后再进入SGID目录创建文件。

4、永久生效:将umask 0002加入/etc/profile或用户shell配置文件(如~/.bashrc)。

5、验证:在SGID目录中执行touch testfile && ls -l testfile,确认其组权限包含w位且属组与目录一致。

五、排查SUID/SGID失效的常见原因

即使权限位已正确设置,SUID/SGID仍可能因系统策略或配置错误而无法触发预期行为,需逐项核查底层条件是否满足。

1、确认目标文件为可执行二进制:运行file /path/to/executable,输出必须含ELF字样;若为shell script,SUID必然失效。

2、检查文件是否位于noexec挂载的文件系统:执行mount | grep "$(df . | tail -1 | awk '{print $1}')" | grep noexec,若存在noexec选项,需重新挂载或更换路径。

3、验证SELinux状态:执行getenforce,若返回Enforcing,则需检查SELinux布尔值setuid是否启用:getsebool setuid,必要时执行setsebool -P setuid on。

4、确认文件未被chattr锁定:运行lsattr /path/to/executable,若输出含i或a属性,SUID/SGID将被内核忽略。

5、检查内核参数fs.suid_dumpable:执行sysctl fs.suid_dumpable,值为0时部分SUID进程core dump受限,虽不阻断权限切换,但影响调试验证流程。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

2620

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

249

2026.02.03

printf用法大全
printf用法大全

php中文网为大家提供printf用法大全,以及其他printf函数的相关文章、相关下载资源以及各种相关课程,供大家免费下载体验。

708

2023.06.20

fprintf和printf的区别
fprintf和printf的区别

fprintf和printf的区别在于输出的目标不同,printf输出到标准输出流,而fprintf输出到指定的文件流。根据需要选择合适的函数来进行输出操作。更多关于fprintf和printf的相关文章详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1009

2023.11.28

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

3890

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

3333

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2473

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

5990

2023.07.05

FrankenPHP集成Laravel详细教程
FrankenPHP集成Laravel详细教程

本专题提供FrankenPHP集成Laravel的详细配置指南,全面解析运行原理、开发环境搭建、Caddyfile配置、Octane工作模式、数据库连接、队列任务、定时任务和生产环境优化,解决部署过程中常见的报错与兼容性问题。

0

2026.10.08

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn