我有以下代码:
std::string cmd = "sudo chmod a+x file";
int r = system(cmd.c_str());
哪个工作正常。
如何在不调用 system() 函数的情况下做同样的事情?
我能得到的是:
#include <sys/stat.h>
int r = chmod("file", S_IXUSR | S_IXGRP | S_IXOTH);
在这种情况下如何使用“sudo”?
谢谢你。
你不能。除非您的程序是 suid root,否则很可能不是这种情况 - 否则您不会使用 sudo。
然而,根据你的程序做什么,给它 setuid-root 可能确实是要走的路。您需要执行需要 root 权限和 sudo 访问权限的操作chmod
,尤其是在任意模式/路径上,通常不会授予非 root 用户。
特权基于进程。处理此问题的一种方法是让您的程序设置 setuid 位并由 root 拥有。启动后,做任何需要特权的事情,然后使用setuid
系统调用删除特权状态。