0

我有以下代码:

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”?

谢谢你。

4

2 回答 2

3

你不能。除非您的程序是 suid root,否则很可能不是这种情况 - 否则您不会使用 sudo。

然而,根据你的程序做什么,给它 setuid-root 可能确实是要走的路。您需要执行需要 root 权限和 sudo 访问权限的操作chmod,尤其是在任意模式/路径上,通常不会授予非 root 用户。

于 2012-05-14T09:39:51.953 回答
1

特权基于进程。处理此问题的一种方法是让您的程序设置 setuid 位并由 root 拥有。启动后,做任何需要特权的事情,然后使用setuid系统调用删除特权状态。

于 2012-05-14T09:47:44.460 回答