命令行 – 在root文件拥有该文件后,有效用户ID不会更改

命令行 – 在root文件拥有该文件后,有效用户ID不会更改,第1张

概述我正在读一本关于使用C编程的书,我得到了一个部分,我必须编写一个程序,它将显示正在执行文件的真实uid和有效uid.用 gcc编译代码后,我输入命令查看当前的uOwner和gOwner ls-l id_demo输出是这样的: -rwxrwxr-x 1 user user 8629 Sep 21 13:04 id_demo 然后我执行程序本身,这是我得到的: real uid: 1000 effec @H_301_1@我正在读一本关于使用C编程的书,我得到了一个部分,我必须编写一个程序,它将显示正在执行文件的真实uID和有效uID.用 gcc编译代码后,我输入命令查看当前的uOwner和gOwner ls-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

再次,执行程序显示真正的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不会更改所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/1049030.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存