sudo -uを使用して他のユーザーとしてコマンドを実行中に問題が発生しました。

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問題はありません。

答え1

ユーザーが特定のタスクをユーザーとして実行できるsudoようにセキュリティポリシーを設定する必要があります。マニュアル()を読み、命令を使用して設定します。xyzabcsudoersman sudoersvisudo/etc/sudoers

たとえば、ユーザーがパスワードなしでユーザーとして実行できるようにしますxyz。次の文字列を次に追加します(直接編集せずに使用してください)。/usr/bin/whoamiabc/etc/sudoersvisudo/etc/sudoers

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

今テストしてみてください。

xyz@host:~$ sudo -u abc /usr/bin/whoami
abc

答え2

sudoこれは違うからだsu。あなたはsu abcシステムのユーザーになります。abcそうすれば、あなたがabcできることは何でもできます。

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

答え3

すべてが大丈夫に見えますが、まだメッセージが表示され、毎回パスワードをSorry user xxx cannot execute...求める場合。sudo

次のことができます。

  1. 削除行/etc/sudoersにユーザー設定が含まれています。
  2. アーカイブの保存
  3. ファイルを開き、このユーザーのオプションをコピーせずに入力します。
  4. アーカイブの保存
  5. 試してみてください。

これは私にとって効果的です。わかりましたが、Eメールで実行する必要があるコマンドをコピーしたので、行末は間違っていました。

関連情報