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

进程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
为什么?


因为你的命令顺序错了。你 chown 之后再 ls -l test 看看 set-user-id 还在不?

【热门文章】
【热门文章】