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


10

sudo実際に必要のないコマンドに適用するとsudo

  • ときどき、パスワードの入力を求められません。たとえば、私のの下$HOMEsudo ls

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

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

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


15
プログラム実際にプログラムを実行せずに、rootだけが実行できることを実行しようとするのか、起動ユーザーがアクセスを禁止されているファイルにアクセスしようとするのかを決定することは、変な停止問題です。それで、sudoがそれをしていないことを確認できます。
zwol 2018年

2
+1質問は誤解に基づいていますが、症状は明確に説明されており、明確な答えが1つあるためです。
18年

回答:


22

典型的な構成では、コマンドは関係ありません。sudoを初めて使用するときはパスワードを入力する必要があり、次の15分間は特定のシェルでパスワードを必要としません。

コンピューターの観点からは、「sudoを必要とするコマンド」などはありません。すべてのユーザーが任意のコマンドを実行できます。結果は、「アクセスが拒否されました」または「そのようなファイルまたはディレクトリはありません」などのエラーメッセージにすぎない場合がありますが、コマンドを実行することは常に可能です。

たとえば、duアクセス権限のないコンテンツを含むディレクトリツリーで実行すると、権限エラーが発生します。これが「アクセスが拒否されました」という意味です。を実行するとsudo du、sudoはdurootとして実行されるため、権限エラーは発生しません(これがrootアカウントの要点です。rootは常に権限を持っています)。を実行するとsudo duduはrootとして実行され、が起動sudoした後はまったく関与しませんdu。duが許可エラーを検出するかどうかは、sudoの動作方法とはまったく関係ありません。

役に立つことをするためにsudo 必要とするコマンドがあります。有用性は人間の概念です。コマンドがrootとして実行されたときに有用であるが、アカウントの下で実行されなかった場合は、sudo(またはrootとしてコマンドを実行する他のいくつかの方法)を使用する必要があります。

sudoがパスワードを要求するかどうかは、2つの要因によって異なります。

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

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


他のユーザーではなく、ルートのみに実行可能ビットが設定されているファイルがある可能性があります。これは、「実行するにはrootが必要」ではない可能性があります。(つまらないことだけです。)
PaŭloEbermann、

@PaŭloEbermann私は「そのような(まれな)ケースについてのつまらないことを避けるために、「すべてのユーザー任意のコマンドを実行することを試みることができる」と書きました。常につまらないものがあります:(
Gilles 'SO- stop

45

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

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


ありがとう。あなたは意味するかsudo du /path/to/some/dir、常に自分のパスワードを必要とする、または決してかかわらず、いずれかの必要がありますか/path/to/some/dir
Tim、

12
はい。常にパスワードが必要です(または必要ありません)。明らかに、それはあなたのパスワードを必要とするがすでにキャッシュにそれを保存しているなら、それはあなたにそれを入力するように促しません。
dr_

5
厳密に言えば、コマンドとその引数を指定できるため、パスに依存する可能性/etc/sudoersがあります。ただし、そのようなものを何も追加していないsudoers場合(そして、追加している場合は、それに気付くことを願っています)、引数は重要ではありません(を介し てroot への一般的なアクセス権がある場合は、コマンドも重要ではありませんsudo)。
スティーブンキット2018年

19
sudoはパスワードをキャッシュに保存せず、パスワードの確認でIDが確認された情報のみを保存します。以来sudoのsetuid-rootプログラムがあり、それはすでにそれが誰と何を実行するために必要なすべての権限を持っている-唯一に指定されているユーザーは、正確にそれを使用できるようにするために、信頼されsudoersたファイル、およびそれを使用する他のすべての試みを拒否すること。だからこそsudo、非常に小さくてよく研究されたプログラムであることが重要です。
telcoM 2018年

6

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

コマンド sudoを必要とする、または必要としないというわけではありません。あなたが走るとき

sudo -u user command

システムはcommandとして実行されますuser

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.