我有以下代码:
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”?
谢谢。
答案 0 :(得分:3)
你做不到。除非您的程序是suid root,否则很可能不是这样 - 否则你就不会使用sudo。
但是,根据你的程序做什么,给它setuid-root可能确实是要走的路。您需要执行需要root权限的操作,并且对chmod
的sudo访问权限,特别是在任意模式/路径上,通常不会授予非root用户。
答案 1 :(得分:1)
权限基于流程。处理此问题的一种方法是使您的程序设置setuid位并由root拥有。启动后,执行您需要权限的任何操作,然后使用setuid
系统调用删除特权状态。