次のコマンドでユーザー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
を実行します問題ありません
ユーザー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
これは、Sudo
がsu
と異なるためです。あなたがsu abc
、システムに関する限り、ユーザーabc
になります。その後、abc
が実行できることをすべて実行できます。
一方、Sudo
は、他のユーザーが一部のコマンドをプロキシで実行できるようにするために使用されます。つまり、Sudo
構成では、abc
に代わっていくつかのコマンドを実行できます。実行しようとしているコマンドがそれらのいずれでもない場合、報告したエラーが発生します。
すべてが問題ないように見えても、Sorry user xxx cannot execute...
メッセージが表示され、毎回Sudo
パスワードを要求され続けます。
あなたはこれを行うことができます:
/etc/sudoers
ユーザー設定を含む行を削除これでうまくいきました。電子メールから実行が必要なコマンドをコピーしたため、その行の末尾が悪いことがわかりました。