首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件修改后取消suid位的原因

文件修改后取消suid位的原因
EN

Unix & Linux用户
提问于 2016-05-23 14:57:14
回答 1查看 2.3K关注 0票数 6

我有一个(S\g)uid文件世界-可写:

代码语言:javascript
复制
ls -lh suid_bin.sh
-rwsr-srwx 1 root root 168 mai   23 16:46 suid_bin.sh

使用非根用户帐户登录。我使用vi (或其他编辑器)修改"suid_bin.sh“。保存新内容后,(S\g)uid位被取消设置:

代码语言:javascript
复制
ls -lh suid_bin.sh 
-rwxr-xrwx 1 root root 168 mai   23 16:46 suid_bin.sh

为什么?有什么办法在修改后保留(S)uid位吗?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2016-05-23 16:02:01

Unix权限允许写入文件,如果不小心有人会在setuid文件上设置组或世界可写位,但不允许陌生人更改这些文件的所有者和组ids。

因此,修改后,内核从文件中删除setuid/setgid位,以确保没有恶意代码写入文件。

根用户当然可以恢复setuid位,但是普通用户,如果他,由于某人的错误,获得了对特权可执行文件的写访问权,将无法利用它。

而且,我不确定在不编辑内核源代码和重新编译的情况下,是否可以禁用内核的部分。

请注意,Linux中的setuid脚本在执行后不会获得setuid状态,因为实际上内核在没有setuid状态的情况下启动脚本解释器,其上一次解析参数为脚本的完整路径,然后解释器将脚本作为普通文件读取。但在其他Unix系统上,这种情况可能有所不同。

票数 10
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/284947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档