web-dev-qa-db-ja.com

実際に「Sudo」を必要としないコマンドが与えられたときに、Sudoはパスワードを要求するかどうかをどのように決定しますか?

実際にSudoを必要としないコマンドにSudoを適用すると、

  • 時々それは私のパスワードを要求しません。たとえば、私の$HOMESudo lsの下にあります。

  • しかし、私はそれが他のいくつかのコマンドのために機能することを覚えていますが、どちらのコマンドを忘れたかです。

したがって、実際にSudoを必要としないコマンドが与えられたときに、Sudoがパスワードを要求するかどうかをどのように決定するのか疑問に思いました。 /etc/sudoersにそれを指定するルールはありますか?

私の本当の問題は、duを使用すると、一部のディレクトリで「アクセス権が拒否されました」と表示されることがあり、場合によっては、おそらく一部のディレクトリでアクセス権がないためでしょうか?私はSudoduに関係なく適用し、関係なくパスワードを要求されると思っていましたが、実際には自分のディレクトリにはありません。

10
Tim

典型的な構成では、コマンドは関係ありません。 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つの要因によって決まります。

  1. Sudoは、構成に基づいて、認証が必要かどうかを決定します。デフォルトでは、Sudoにはパスワードが必要です。これは、authenticateオプションをfalseに設定し、NOPASSWDタグを使用して適切なルールを設定するなど、いくつかの方法でオフにできます。
  2. Sudoがパスワードを要求する場合、キャッシュされた値を使用することは問題ないかもしれません。 Sudoがパスワードを必要とする理由は、誰がそれを呼び出しているのかを認証するためではなく(Sudoがそれを呼び出したユーザーを知っている)、キーボードで制御を奪ったのは誰かであり、コマンドの実行者であることを確認するためです。デフォルトでは、Sudoは、15分以内にパスワードを入力した場合でも、コマンドを実行していると信じて喜んでいます(これは、timeoutオプションで変更できます)。同じ端末でパスワードを入力する必要があります(ある端末にログインしたまま、その端末を無人のままにして別の端末を使用すると、他の端末でSudoを使用するために誰かがこれを利用することはできません。ただし、これは非常に弱い利点であり、tty_ticketsオプションをfalseに設定することで無効にできます)。

¹ ほぼ、しかしそれはこのスレッドの範囲を超えています。

Sudoは、実行するように要求されたコマンドが他のユーザー(通常はroot)として実行する必要があるかどうかを知りません。知っているのはその構成だけです。これにより、どのユーザーがSudoを実行できるか、どのユーザーを「ターゲット」として、どのコマンドを実行できるかが決まります。また、パスワードが必要かどうか、どちらが必要か、認証トークンを保持するかどうかも決定します。

デフォルトのDebian構成を使用している場合は、後者がおそらくここに関係しています。Sudoは、特定の端末で初めて使用するときにパスワードを要求し、次に認証トークンを保持します一定の時間。同じ時間枠内で同じ端末でSudoを再利用しても、パスワードの入力は求められません。

45
Stephen Kitt

実際にSudoを必要としないコマンドに

コマンドneedsまたはneeds not Sudoではありません。あなたが走るとき

Sudo -u user command

システムはcommanduserとして実行します。

呼び出しが成功したかどうか、およびパスワードが要求されたかどうかは、セキュリティポリシーsudoersに依存します(通常は/etc/sudoers)。

6
dr_