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


12

次のコマンドで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ても問題はありません

回答:


17

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

たとえば、ユーザーxbc 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

/ etc / sudoersを直接編集することを避けるべき理由を説明しましたか?
アディプラセティョ

/ etc / sudoersを直接編集すると、間違える可能性があるため、sudoersファイルを破損し、(最悪の場合)sudoを使用して自分自身をブロックします。「visudoをはただのエディタではありません、それはまた、sudoersファイルの構文をチェックし、間違いを避けるのに役立ち、タイプミスなど
SVQ

4

これはとsudoは異なるためですsu。すると、システムに関する限りsu abcユーザーになりますabc。その後、abcできることなら何でもできます。

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


0

すべてが順調に見えても、まだSorry user xxx cannot execute...メッセージが表示されており、sudoパスワードを毎回ます。

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

  1. /etc/sudoers、ユーザー設定の削除ライン
  2. ファイルを保存
  3. ファイルを開き、そのユーザーのオプションを(NO COPING)と入力します
  4. ファイルを保存
  5. それを試してみてください。

これは私のために働いた。電子メールからの実行が必要なコマンドをコピーしたため、その行の終わりが悪いことがわかりました。


visudoそもそもそれを編集するために使用したことがあるなら、あなたはそれを言われたでしょうか?
-Auspex

いいえ、あなたはしません。
borbar

まぁ。私は本当に考えていたでしょう...いずれにせよ、コピーアンドペーストよりも、手動で入力するエラーが発生する可能性がはるかに高いと思います。ラインエンドが異なることに注意してください。
-Auspex
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.