承認されていないコマンドを実行したときにsudoがパスワードを求めるメッセージを表示しないようにする

承認されていないコマンドを実行したときにsudoがパスワードを求めるメッセージを表示しないようにする

パスワードなしでsudoを介して特定のコマンドを実行する権限をグループに付与しました。ユーザーの1人がタイプミスや誤ったコマンドを実行すると、パスワードを入力するように求められ、エラーメッセージが表示されます。これはユーザーに混乱を招く可能性があるため、パスワードを求めるのではなくエラーを表示したいと思います。可能ですか?

以下は私のsudoersファイルの例です。

%mygroup ALL=(ALL) NOPASSWD:/usr/local/bin/myscript.sh *

エラースクリプトを実行する場合の例:

# sudo /usr/local/bin/otherscript.sh
[sudo] password for user:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>.

希望の出力:

Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>. Please check the command and try again.

パスワードプロンプトがないことに注意してください。

私のgoogle-fuが失敗し、ユーザーがパスワードを要求しない場合にのみ結果を返します。はいコマンドの実行を許可します。

答え1

クイックリードsudo(8)

   -n          The -n (non-interactive) option prevents sudo from
               prompting the user for a password.  If a password is
               required for the command to run, sudo will display an error
               message and exit.

疑う人のために:

# grep jdoe /etc/sudoers
jdoe    ALL=(ALL) NOPASSWD: /bin/echo
#

次のようにテストしてください。

% sudo echo allowed
allowed
% sudo -n ed             
sudo: a password is required
% sudo ed               

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

Password:

したがって、これらの人はパスワードプロンプトを防ぐのに役立ちますaliassudo今、なぜカスタムコンパイルが必要なのかsudoわかりません。ただマニュアルを読んだ。

答え2

私には役に立ちましたが(Sudoバージョン1.8.17p1)、あなたの質問のいくつかだけが満足したのは、パスワードの試行回数を0に設定することでした。

Defaults:%mygroup passwd_tries = 0

これにより、パスワードが必要なコマンドを試行すると、sudoはコード1で終了します。しかし、いかなる種類のエラーメッセージも生成しません。

答え3

あなたはできません。

認証するまで、自分が誰であるかはわかりません。基本的にパスワードなしでは認証できません。

USBキー、指紋スキャナー、音声認証、顔認識などを使用するように認証を変更できますが、ポイントは同じです。

認証しないと認証できません。そして認証する前に、sudoが実行できるものと実行できないことを知らせる必要はありません。

答え4

これは不可能です。唯一の方法は、ソースコードを変更して独自のブランチをコンパイルすることです。sudo

関連情報