我在Debian中有一个需要root权限的程序,而myuser必须运行它,但是我必须从运行在mono中的.NET应用程序(C#)进行调用。 在/ etc / sudoers中,我添加了一行:
myuser ALL = NOPASSWD: /myprogram
所以sudo ./myprogram
适用于myuser。
在。我在我的代码中使用的.NET
string fileName = "/myprogram";
ProcessStartInfo info = new ProcessStartInfo (fileName);
...
如何拨打电话" sudo fileName"?它暂时不起作用...... 谢谢你,莫妮克。
答案 0 :(得分:5)
在类似情况下,以下内容适用于我,并演示了传递多个参数:
var psi = new ProcessStartInfo
{
FileName = "/bin/bash",
UseShellExecute = false,
RedirectStandardOutput = true,
Arguments = string.Format("-c \"sudo {0} {1} {2}\"", "/path/to/script", "arg1", arg2)
};
using (var p = Process.Start(psi))
{
if (p != null)
{
var strOutput = p.StandardOutput.ReadToEnd();
p.WaitForExit();
}
}
答案 1 :(得分:1)
您只需要将程序作为参数传递给sudo命令,如下所示:
ProcessStartInfo info = new ProcessStartInfo("sudo", "/myprogram");
Process.Start(info);