私は以下の問題を観察します。
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.