0

对于某些组件测试,在我在 Ubuntu 14.04 上的 C++ testapp中,我想暂时重命名/sbin/reboot以防止我的被测系统(在 testapp 中启动的另一个大型 C++ 应用程序)调用 system("/sbin/reboot") 并在测试后我想恢复/sbin/reboot到它的全部荣耀。

所以在我调用的 cmd shell 上

sudo setcap cap_chown,cap_dac_override,cap_setfcap=+ep testapp

为了使我的 testapp 能够进一步system("chown user /sbin/reboot")调用system("chgrp developer /sbin/reboot")system("mv /sbin/reboot /sbin/reboot.tmp")

但是 testapp 以 chown 停止:更改“/sbin/reboot”的所有权:不允许操作

那么,要在未运行 sudo 的应用程序中重命名此特定文件,必须做些什么?

4

1 回答 1

0

对于 www 中的所有 linux 功能专家:问题是 - “我的应用程序需要在没有 sudo 的情况下重命名 /sbin/reboot 的哪些 linux 功能 - 以获得与调用sudo mv /sbin/reboot /sbin/reboot.tmpshell相同的效果。

@datenwolf:不失礼貌,但如果我问人群“几点了”?“你问错了问题,因为我没有手表,但我有一个湿度计,所以如果你问湿度,我很乐意帮助你”这样的答案对我一点帮助都没有。

重命名根拥有的文件的解决方案是,只设置

sudo setcap cap_dac_override=+ep MyTestApp

在命令行上,而不是使用

system("mv file1 file2");

在 MyTestApp 源代码中,切换回

rename("file1" "file2");

然后一切都像一个魅力。

于 2017-04-01T06:40:02.100 回答