为简化大家阅读,我把关键代码贴出
有如下C代码,编译成程序 test
uid_t euid = geteuid();
printf("EUID:%d",euid);
同时设置 test 为root所有以及SUID
# chmod u+s test
# chown root test
有另外一个程序 fork,调用 exec 来执行 test
execlp("test","test");
系统中普通用户的uid为1000,root的uid为0
个人觉得,输出结果应该是: EUID:0 因为test设置了SUID,fork在exec时应该会将有效用户ID设置为test的拥有者,也即root
但是结果却是 EUID:1000
为什么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。