0
私はいくつかの簡単なコマンドを実行するために、Ubuntu 16.04でdotnetcoreを使って小さなプロジェクトを開発しています。これは私が上記のコードのようなsudo service nginx restart
でsudoコマンドを使用しようとしたとき、私はコマンドdotnetcoreからsudoでLinuxコマンドを実行するにはどうすればいいですか?
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());
}
}
を実行するために使用されるコードで、その後、私はプログラムを実行したが、私は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
あなたのプログラムはrootとして実行できます。次に、再認可せずにルート権限でコマンドを実行できるはずです。それ以外の場合は、パスワードを回避する方法がわかりません。明示的な許可なしにプログラムが自分のマシン上でルートコマンドを実行できる場合、これは大きなセキュリティ上のリスクになります。 –
@AndréStannekはい、できます:http://askubuntu.com/a/147265私はあなたと一緒ですが、これは行わないでください。一方、特定のアプリケーションにsudoを制限することができます。http://askubuntu.com/a/39294 – mistapink
[パスワードなしでsudoコマンドをJavaプログラムから実行するにはどうすればいいですか?](http://stackoverflow.com/questions/) 10732526/how-to-run-sudo-command-without-password-from-java-program) – mistapink