linux 重命名 root 拥有的文件的能力

linux capabilities to rename a root owned file

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

所以在 cmd shell 我调用

sudo setcap cap_chown,cap_dac_override,cap_setfcap=+ep testapp

为了使我的测试应用程序能够调用 system("chown user /sbin/reboot") 此外 system("chgrp developer /sbin/reboot")system("mv /sbin/reboot /sbin/reboot.tmp")

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

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

对于 www 中的所有 linux 功能专家:问题是 - “我的应用程序需要重命名 /sbin/reboot 中的哪些 linux 功能而不使用 sudo - 获得与在 shell.

中调用 sudo mv /sbin/reboot /sbin/reboot.tmp 相同的效果

@datenwolf:没有不礼貌,但如果我问人群 "What's the time"? 这样的回答 "you asked the wrong question, because I don't have a watch, but I have a humidity meter, so if you ask about humidity, I am glad to help you" 对我一点帮助都没有。

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

sudo setcap cap_dac_override=+ep MyTestApp

在命令行上,而不是使用

system("mv file1 file2");

在 MyTestApp 源代码中,切换回

rename("file1" "file2");

那么一切都很顺利。