「コマンドが見つかりません」の後、sudoがパスワードを求めるメッセージを表示しないのはなぜですか?

「コマンドが見つかりません」の後、sudoがパスワードを求めるメッセージを表示しないのはなぜですか?

私は以下の問題を観察します。

abc@ubuntu:~$ sudo - i 
[sudo] password for abc: 
sudo: -: command not found
abc@ubuntu:~$ sudo -i
root@ubuntu:~# 

sudoコマンドは、「コマンドが見つかりません」エラーのため失敗したように見えますが、正しいオプションを使用した後、sudoの試みはrootログインを取得しますが、今回はパスワードを要求しません。なぜこんなに奇妙な行動をするのでしょうか?

セキュリティの観点からこの質問をさせていただきます。 「コマンドが見つかりません」の後でも、ユーザーはまだ「abc」であり、おそらく管理者ではない可能性があります。彼/彼女はsudoのパスワードを知る必要さえありません。いいえ?

答え1

最初の場合、シェルはsudo実行したいコマンドの後にコマンドがあると考え-、そのようなコマンドがないため、コマンドが見つからないと伝えます。前のコマンドを実行すると、デフォルトでsudoパスワードの入力を求められます。

2番目のケースでは、シェルはオプションを使用してsudoコマンドを実行していることを認識します-i。最初のコマンドを実行しようとしたときにパスワードを正しく入力したため、パスワードの再入力を求められません。 (デフォルトでは15分間資格情報をキャッシュします。)

答え2

$man sudo
...
Security policies may support credential caching
to allow the user to run sudo again for a period
of time without requiring authentication.  The sudoers
policy caches credentials for 15 minutes, unless
overridden in sudoers(5).  By running sudo with
the -v option, a user can update the cached credentials
without running a command.

関連情報