
-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
再次,执行程序显示真正的uID和uID为1000. uID必须为0之后的最后一步是:sudo chmod us ./uID_demo但对我来说它们保持为1000,在书中输出显示为是这样的:
real uID: 1000effective uID: 0
任何想法为什么会发生这种情况?
UPDATE
ID_demo源代码:
#include <stdio.h>int main (){ printf("real uID: %d\n",getuID()); printf("effective uID: %d\n",geteuID());} 更新2
截屏
请帮忙.我疯了,我花了6个小时寻找解决方案,我需要继续前进.
解决方法 We’ve figured it out.原因是安装了ecryptfs的主目录. mount输出包含以下行:/home/evgeny/.Private on /home/evgeny type ecryptfs
这意味着主目录实际上不是根文件系统的一部分(具有必要的suID标志),但它自己的虚拟文件系统默认情况下显然不支持setuID二进制文件.我已经成功地使用具有加密主目录的测试用户重现了该问题.
可以使用以下命令将suID标志添加到ecryptfs:
sudo mount -i -o remount,suID /home/evgeny
我不确定它是多么安全,也不确定如何永久地改变它以便它能够在重新启动后存活下来.
总结以上是内存溢出为你收集整理的命令行 – 在root文件拥有该文件后,有效用户ID不会更改全部内容,希望文章能够帮你解决命令行 – 在root文件拥有该文件后,有效用户ID不会更改所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)