2012-05-14 40 views
0

我有以下代码:如何在不使用system()的情况下从C程序中使用“sudo”?

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); 

我怎么能在这种情况下使用“命令”?

谢谢。

+2

你不想使用系统的具体原因是什么? –

+0

基本上为了效率的原因。但是,不要陷入循环,反正它不是一个大问题。 – Pietro

回答

3

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

但是,根据你的程序的不同,给它setuid-root可能确实是一条路。您需要执行需要root权限和sudo权限的操作,尤其是在任意模式/路径下,通常不会授予非root用户。

1

权限基于过程。处理这种情况的一种方法是让你的程序拥有setuid位并由root拥有。启动后,请执行您所需的任何需要权限的操作,然后使用系统调用setuid来删除特权状态。

相关问题