我目前正在阅读一本关于用 C 编程的书,我到了必须编写一个程序的部分,该程序将显示正在执行文件的真实 uid 和有效 uid。用 编译代码后gcc
,我输入命令查看当前的 uOwner 和 gOwnerls- l id_demo
输出是这样的:
-rwxrwxr-x 1 user user 8629 Sep 21 13:04 id_demo
然后我执行程序本身,这就是我得到的:
real uid: 1000 effective uid: 1000
...到目前为止,一切都很好。然后我输入一个命令来更改文件的所有者:
sudo chown root:root ./id_demo
ls -l
确认所有者已更改为 root :
-rwxrwxr-x 1 root root 8629 Sep 21 13:04 id_demo
再次,执行程序显示real uid
和为 1000。必须为 0uid
之后的最后一步是:但对我来说,它们保持为 1000,在书中输出清楚地显示为:uid
sudo chmod u+s ./uid_demo
real uid: 1000
effective uid: 0
任何想法为什么会发生这种情况?
更新
id_demo 源代码:
#include <stdio.h>
int main ()
{
printf("real uid: %d\n", getuid());
printf("effective uid: %d\n", geteuid());
}
更新 2 屏幕截图
请帮忙。我要疯了,我花了 6 个多小时寻找解决方案,我需要继续前进。