开发者社区> 问答> 正文

进程exec了设有SUID的程序,会改变进程的有效用户ID吗?

为简化大家阅读,我把关键代码贴出

有如下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
为什么?

展开
收起
a123456678 2016-06-06 13:51:30 2044 0
1 条回答
写回答
取消 提交回答
  • 因为你的命令顺序错了。你 chown 之后再 ls -l test 看看 set-user-id 还在不?

    2019-07-17 19:28:26
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
服务上云加速大家居产业C2M进程 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多