我正在使用Ubuntu 16.04上的dotnetcore开发一个小项目来执行一些简单的命令。这是我用来运行命令的代码
public void ExecuteCommand(string command)
{
Process proc = new Process();
proc.StartInfo.FileName = "/bin/bash";
proc.StartInfo.Arguments = "-c \" " + command + " \"";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
while (!proc.StandardOutput.EndOfStream)
{
Console.WriteLine(proc.StandardOutput.ReadLine());
}
}
当我尝试使用带有sudo service nginx restart
等上述代码的sudo命令时,我运行程序,但程序显示控制台让我输入root密码。那么如何在不直接在控制台上输入密码的情况下执行sudo命令呢?
我的机器上的Dotnetcore信息
.NET Command Line Tools (1.0.0-preview2-1-003177)
Product Information:
Version: 1.0.0-preview2-1-003177
Commit SHA-1 hash: a2df9c2576
Runtime Environment:
OS Name: ubuntu
OS Version: 16.04
OS Platform: Linux
RID: ubuntu.16.04-x64
答案 0 :(得分:1)
您可以以root用户身份运行程序,也可以仅将用户添加到sudo组。
或打开sudoers文件:sudo visudo
并通过添加以下行为用户添加所有特权
username ALL = NOPASSWD : ALL
答案 1 :(得分:0)
如果你想使用“sudo”,运行程序的用户应该是sudoers组。