典型的な構成では、コマンドは関係ありません。sudoを初めて使用するときはパスワードを入力する必要があり、次の15分間は特定のシェルでパスワードを必要としません。
コンピューターの観点からは、「sudoを必要とするコマンド」などはありません。すべてのユーザーが任意のコマンドを実行できます。結果は、「アクセスが拒否されました」または「そのようなファイルまたはディレクトリはありません」などのエラーメッセージにすぎない場合がありますが、コマンドを実行することは常に可能です。
たとえば、du
アクセス権限のないコンテンツを含むディレクトリツリーで実行すると、権限エラーが発生します。これが「アクセスが拒否されました」という意味です。を実行するとsudo du
、sudoはdu
rootとして実行されるため、権限エラーは発生しません(これがrootアカウントの要点です。rootは常に権限を持っています)。を実行するとsudo du
、du
はrootとして実行され、が起動sudo
した後はまったく関与しませんdu
。duが許可エラーを検出するかどうかは、sudoの動作方法とはまったく関係ありません。
役に立つことをするためにsudo を必要とするコマンドがあります。有用性は人間の概念です。コマンドがrootとして実行されたときに有用であるが、アカウントの下で実行されなかった場合は、sudo(またはrootとしてコマンドを実行する他のいくつかの方法)を使用する必要があります。
sudoがパスワードを要求するかどうかは、2つの要因によって異なります。
- 構成に基づいて、sudoは認証が必要かどうかを決定します。デフォルトでは、sudoにはパスワードが必要です。これは、
authenticate
オプションをfalseに設定したり、NOPASSWD
タグに適用可能なルールを設定したりするなど、いくつかの方法でオフにすることができます。
- sudoがパスワードを要求する場合、キャッシュされた値を使用することは問題ないかもしれません。sudoがパスワードを必要とする理由は、誰がそれを呼び出しているのかを認証するためではなく(sudoがそれを呼び出したユーザーを知っている)ので、それでも問題ありません。デフォルトでは、sudoは、15分以内にパスワードを入力した場合でも、コマンドを実行していると考えます(これは
timeout
オプションで変更できます)。同じ端末でパスワードを入力する必要があります(ある端末にログインしたままで、その端末を無人のままにして、別の端末を使用すると、誰かがtty_tickets
¹ ほぼ、しかしそれはこのスレッドの範囲を超えています。