c - 如何在不使用 system() 的情况下从 C 程序中使用 "sudo"?

标签 c system sudo chmod

我有以下代码:

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 权限的操作,并且通常不会向非 root 用户授予对 chmod 的 sudo 访问权限,尤其是在任意模式/路径上。

关于c - 如何在不使用 system() 的情况下从 C 程序中使用 "sudo"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10580797/

相关文章:

ruby - 如何在 Ruby 中检查用户的 root 权限?

bash - sudo'd mysqldump over ssh 语法?

c - 如何在 switch-case 函数中使用数组?

c - 为什么 &x + 1 不会导致段错误?

c - 这两个语句有什么区别

C:运行系统命令并获取输出?

linux - 有人可以解释 cpu stat 中什么是美好时光吗?

c - sysctl() 的参数是什么?

c - 枚举类型的使用

sudo - 除非以 sudo 启动,否则tigervncserver 会崩溃