web-dev-qa-db-ja.com

Sudo -uを使用して別のユーザーとしてコマンドを実行する際の問題

次のコマンドでユーザーlsとしてabcを実行しようとすると、エラーが発生します。

xyz@Host:~/temp$ Sudo -u abc ls
[Sudo] password for xyz:
Sorry, user xyz is not allowed to execute '/bin/ls' as abc on Host.

しかし、もし私がsu abcを実行してからlsを実行します問題ありません

13
user1678312

ユーザーxyzがユーザーabcとして何かを実行できるように、Sudoセキュリティポリシーを設定する必要があります。 「man sudoers」を読み、visudoコマンドを使用して/ etc/sudoersを構成します。

たとえば、ユーザーxyz exec/usr/bin/whoamiをユーザーabcとしてパスワードなしで許可してみましょう。この文字列を/ etc/sudoersに追加します(visudoを使用して、/ etc/sudoersを直接編集しないでください):

xyz ALL = (abc) NOPASSWD: /usr/bin/whoami

そして今それをテストします:

xyz@Host:~$ Sudo -u abc /usr/bin/whoami
abc
18
svq

これは、Sudosuと異なるためです。あなたがsu abc、システムに関する限り、ユーザーabcになります。その後、abcが実行できることをすべて実行できます。

一方、Sudoは、他のユーザーが一部のコマンドをプロキシで実行できるようにするために使用されます。つまり、Sudo構成では、abcに代わっていくつかのコマンドを実行できます。実行しようとしているコマンドがそれらのいずれでもない場合、報告したエラーが発生します。

4
Joseph R.

すべてが問題ないように見えても、Sorry user xxx cannot execute...メッセージが表示され、毎回Sudoパスワードを要求され続けます。

あなたはこれを行うことができます:

  1. /etc/sudoersユーザー設定を含む行を削除
  2. ファイルを保存
  3. ファイルを開き、そのユーザーのオプションを入力してください(コピー不可)
  4. ファイルを保存
  5. それを試してみてください。

これでうまくいきました。電子メールから実行が必要なコマンドをコピーしたため、その行の末尾が悪いことがわかりました。

0
borbar