sudoコマンドの実行に時間がかかるのはなぜですか?


83

私は過去数ヶ月にわたってLinux(Fedora 10、11)を取り上げてきました(そしてそれを大いに楽しんでいます。コンピューターを何度も発見するようなもので、学ぶべきことがたくさんあります)。

以下に示すように、ユーザーを/ etc / sudoersファイルの最後の行に追加したので、sudoコマンドを実行するときにパスワードの入力を求められません。

MyUserName ALL =(ALL)NOPASSWD:ALL

これで、sudoを使用してコマンドを実行するたびに、タスクを実際に実行する前にかなりの時間(〜10秒)一時停止します。これはなぜなのか、どうすれば修正できるのか?Fedora 11 x86 64でSudoバージョン1.7.1を実行しています。


技術的には、これはスクリプトの編集としてカウントされますよね?スクリプトはプログラムではありませんか?

6
NOPASSWD:セキュリティリスクと見なされ、そもそもsudoを使用しなければならないという目的に反します。

私はそれを買うことができますが、なぜそんなに時間がかかるのかという問題はまだ残っています。

2
このマシンはどこからユーザーと認証を取得しますか?おそらくKerberosを使用したLDAP。
wzzrd 2009

回答:


123

SOでこの質問をして、ここに移動しました。つまり、質問を所有しているかのように質問を編集したり、正解を受け入れたりすることはできなくなりましたが、これが問題を解決する真の理由であることが判明しました。

ここにある ユーザー「rohandhruva」が正しい答えを提供します:

これは、インストールプロセス中にホスト名を変更すると発生します。

問題を解決するには、ファイル/ etc / hostsを編集します

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 <ADD_YOURS_HERE> 
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 <ADD_YOURS_HERE>

3
まったく正しい。Fedoraのようなディストリビューションは、インストール時にホスト名を変更しても/ etc / hostsを編集しませんが、なんといっても驚くことです。それはあなたのためのオープンソースです!
dimo414 09

これにより、遅いsudoの使用が修正されました、ありがとう!/ etc / hostnameを編集しましたが、/ etc / hostsファイルの編集を忘れていました。
ジョー

2
ホスト名を127.0.0.1または:: 1の行に追加すると、特定のサーバー関連ソフトウェアが正しいホスト名/ IP /インターフェイスにバインドされる可能性があります。そのような例の1つがCloudera Managerです。hadoopサービスは間違ったホスト名を取得し、すべてlocalhostに解決されるため、CMを混乱させます。可能な解決策については、以下の他の回答を読むことをお勧めします。これにより、他のコンピューターが接続されていないスタンドアロンワークステーションで問題が発生する場合と発生しない場合があります。
ddcruver

1
(同様の理由で)/etc/nsswitch.confにすることもできます。私は「hosts:dns files」に設定されていたので、長いタイムアウトでDNSサーバーでホスト名を検索していました。「hosts:files dns」に変更したので、最初に/ etc / hostsを調べます。nsswitch.confを調べることになったこの答えをありがとう!
アランポーター

1
これが解決策だったのはばかげている。なぜ世界でsudoコマンドが機能するためにホスト名を見る必要があるのですか?ホスト名は何と関係がありsudo echo helloますか?とにかく、答えを
ありがとう-smac89

24

syslogデーモンが正しく機能していることを確認してください。これが原因で問題が発生しました。

次のコマンドを実行します

logger 'Hello world'
  1. コマンドは妥当な時間内に戻りますか?

  2. 「Hello world」は表示され/var/log/syslogますか?

そうでない場合は、syslogデーモンがクラッシュしています。再起動すると問題が解決するはずです。


9
驚いたことに、それは私にとって問題でした。誰がそれを考えていただろう。私にとっての解決策は、syslogを再起動することでした。service rsyslog restart
-MikeKulls

こっちも一緒。service rsyslog restart遅いsudoコマンドを修正しました。
ペドロコルデイロ

驚いたことに、それは私にとって問題でした。それ以前は、サーバーへのリクエスト全体が非常に遅いです。理由を知りたいだけですか?
マイケルワン

10

ネットワーク化されたマウントで読み取る必要があるファイル/ディレクトリの1つですか、それとも何らかの理由で遅いusbデバイスからの読み取りをトリガーしていますか?straceを試して、どこが遅いかを確認してください。速すぎたら

sudo strace -r -o trace.log sudo echo hi

各行は、前のsyscallに入ってからの時間で始まります。

(最初のsudoが必要なようです。結果がどれほど混乱するかわかりません。)


どうも。これはHDDにあり、USBまたはネットワークドライブはありません。

@Cuga:straceから何を学びましたか?

@oligofren:sudo straceを行う必要があります
ysth

8

私は最近、同じ問題を抱えていることを発見しました。sudo遅延はありませんでしたが、その後は突然、約10〜20秒の遅延が発生しました。以下を使用して特定の問題を特定しました。

 1. chmod u+s /usr/sbin/strace  (as the root user)

自分として:

 1. sudo -K
 2. strace sudo /bin/tcsh

そして、システムコールがハングしている場所を見つけます。

私の場合、それがDNS変換にかかっていることがわかりました。明らかに、私のリストにあるDNSenの1つ/etc/resolv.confが非常に不明瞭であるか、うまくいかなかったようです。そのため、解像度の順序を変更しましたが、あっという間に再び動作しました。


(私にとって)ベストアンサー!DBus Brokerがネットワークの切断時にクラッシュし、sudo / KDEが接続にタイムアウトしたことがわかりました。ありがとう!
PSSGCSim

おかげで、これは私を助けてくれました。またhosts、/ etc / nsswitch.confの行に対する以前の変更を元に戻す必要がありました。hosts値の接頭辞として「resolve dns」を追加しました。このプレフィックスを削除すると、sudoは再び高速になりました。
mnieber

5

Fedoraについてはわかりませんが、sudoがログイン元をチェックする他のシステムを使用しました。DNSが適切に設定されていないと、タイムアウトに時間がかかる可能性があります。これは、マシンにSSHで接続するときにも表示されます。プロンプトが表示されるまでには時間がかかります。


5

同じ問題を抱えていたので、/ var / log / auth.logとsyslogでエラーをチェックしました。LDAPサーバーに到達できず、すべてが遅くなったことがわかりました。

LDAPベースの認証を使用しなくなったため、/ etc / nsswitch.confからすべての「ldap」参照を削除しました

それ以来、すべてが再び魅力のように機能します。


5歳の質問に対して明らかに無関係な回答(OPはLDAPを使用しなかった)を投稿するのはなぜですか?
スヴェン

7
誰にでも役立つかもしれないからです。ここで言及されているすべてのことをチェックしましたが、何も助けにはなりませんでした。他の誰かが、sudoコマンドの応答が遅く応答しない根本的な理由としてLDAP接続の問題があるかどうかを確認することで、私の答えを正しい方向に向けることに集中しているかもしれません。DNS関連の回答と同様に重要なのは、ユーザーに直接見えない裏側の何かに障害があることです。このサイトは、単一の質問/回答タイプのウェブサイトではなく、一般的な知識の源であると考えています。関連する知識を収集することです。
桜庭14年

6
また、青の地獄にいるあなたは私の助けを信用しない人です。このサイトが機能するのは、人々が投票するからではなく、知識の共有が奨励されているからです。気に入らない場合は、無視する権利があります。
桜庭14年

5

場合によっては、(/etc/sysconfig/ networkで構成された)ホスト名が/etc/hostsファイルに存在しないことがわかります。したがって、前述のファイルを追加すると、ファイルがすぐに開きます。


3

同様の問題がありました。ホスト名(myboxなど)とホスト名コマンドの完全な出力(mybox.mydomain.com)の両方を配置することで修正しました。これですぐにクリアされました。2分から/ etc / hostsを開いて瞬時にアクセスしました。


3

SELinuxケース

同じsudoコマンドがデーモンでのみ遅く、コマンドラインで速い場合、最も可能性が高いのはSELinuxが原因です。(SELinux = NSA Security-Enhanced Linuxカーネルモジュール。デフォルトでFedoraで有効になっています。)

典型的なケースは、httpサーバーとサーバー管理用の特別なスクリプトで、次の制限がありsudoersます。

apache ALL=(root_or_user) NOPASSWD: /full/path/the_safe_command

この場合、SELinuxに関する何も監査ログに報告されないのが一般的ですausearch -m avc -ts todayが、一時的に強制を無効にすると、スクリプトは高速になりsetenforce 0ます。(そしてで戻る有効化setenforce 1

システムログ(journalcrl)の関連するメッセージは、25秒の遅延後のこれらのみです。

... sudo [...] pam_systemd(sudo:session):セッションの作成に失敗しました:応答を受信しませんでした。考えられる原因には、リモートアプリケーションが応答を送信しなかった、メッセージバスセキュリティポリシーが応答をブロックした、応答タイムアウトの期限切れ、またはネットワーク接続が切断されたことが含まれます。
... sudo [...]:pam_unix(sudo:session):(uid = 0)によってユーザーrootに対して開かれたセッション

すべてのサイレントな「dont-audit」SElinuxメッセージのロギングは、によって有効化semodule -DBおよび無効化できますsemodule -B
(この場合、SELinuxポリシーモジュールをすぐにここで作成するか、この回答のメソッドを使用できることを願っています。)


この情報をありがとうございます。ここの情報から、犯人の可能性(指紋認証)を指摘した関連記事を見つけることができましたfprintd。問題を削除fprintdしてfprintd-pam解決しました。
ケヴィーノ

@KevinO解決策を見つけるのに役立ったことを嬉しく思います。しかし、私の問題は非常に具体的であり、質問への私の貢献は、SELinuxの疑いを診断または除外する方法に過ぎないことを知っていました。
hynekcer

絶対に+1しました!ソリューションにつながったのはメッセージバスでした。私はsudoを数回見ていたが、それは私が必要とする手がかりだった。
ケヴィン

1

sudoers私が持っているサンプルファイルを見ると、NOPASSWD:少し後にスペースがあるはずです。


スペースを追加しましたが、まだ遅れがあります。提案のためのThx。


1

ホストの問題を修正した後、nscdのようなDNSキャッシングアプリケーションを実行している場合は、不良DNSキャッシュをクリアしてください。

/etc/init.d/nscd force-reload

1

私にとっては、krb5-user / config / localesがインストールされていました。/var/log/auth.logを調べると、このことに気付きました。apt-get removeを使用してこれらのパッケージをアンインストールすると、修正されました。明らかにkerberos(pam_krb5)が必要なコンピューターを使用している場合は、これらのパッケージを削除しないでください。


0

認証にLDAPを使用していますか?

その場合、おそらくバインドポリシーソフトを使用する必要があります。/etc/ldap/ldap.conf(または/etc/ldap.conf):

bind_policy soft

0

認証チェーンに何らかのタイムアウトがあるように聞こえます。sudoが認証を試み、ボトルネックを監視する方法を確認します。


0

システム化されたケース

私にとっては、システムのメモリが不足しており、多くのプロセスがクラッシュしていました。私のシステムはsystemdに基づいており、そこに何かがクラッシュしていました。私がやったことをすべて覚えるのは難しいですが、

  • systemctl status <any.service> タイムアウトする
  • できませんでしたsudo reboot(systemdベース)

解決

再起動で問題は解決しましたが、私にとっては単なる絆創膏でした。メモリ不足/クラッシュの理由を調べる必要があります。

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