web-dev-qa-db-ja.com

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

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

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

MyUserName ALL =(ALL)NOPASSWD:ALL

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

88
Cuga

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>
130
Cuga

Syslogデーモンが正しく動作していることを確認してください。これは私に問題を引き起こしました。

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

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

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

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

25
MattB

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

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

各行は、前のシステムコールに入ってからの時間で始まります。

(最初のSudoが必要なようです。結果がどの程度混乱するかはわかりません。)

11
ysth

最近、同じ問題があることがわかりました。 Sudoの遅延はなく、突然、約10〜20秒の遅延がありました。特定の問題を次の方法で特定しました:

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

あなた自身として:

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

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

私の場合、DNS変換にかかっていることがわかりました。/etc/resolv.confの私のリストにあるDNSenの1つは、非常に不快であるか、問題がありました。だから私は解決の順番を変えて、物事が再びすぐにうまくいった。

9
mdpc

同じ問題が発生したため、/ var/log/auth.logとsyslogでエラーを確認しました。 LDAPサーバーにアクセスできず、すべての速度が低下していることがわかりました。

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

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

5
Sakuraba

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

5
Zahid Hussain

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

5
Colin Coghill

SELinuxケース

同じSudoコマンドがデーモンでのみ遅く、コマンドラインで高速である場合、それはが原因です。おそらくSELinuxでしょう。 (SELinux = NSA Security-Enhanced Linux kernel module、enabled in Fedora in default。)

典型的なケースはhttpサーバーとサーバー管理用の特別なスクリプトで、sudoersで制限されています:

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

この場合、監査ログausearch -m avc -ts todayでSELinuxについて何も報告されないのが一般的ですが、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ポリシーモジュールをすぐにここに記述するか、または この答え のメソッドを使用できることを願っています。)

3
hynekcer

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

1
Halsafar

/ etc/hostsファイルを確認し、127.0.0.1のエントリがあることを確認します

ソース

1
Ryan Emerle

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

/etc/init.d/nscd force-reload
1
Roger Smith

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

1

認証チェーンになんらかのタイムアウトがあるようです。 Sudoがどのように認証を試み、ボトルネックがないかを確認します。

0
towo

システム化されたケース

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

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

ソリューション

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

0
Eric Fossum

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

もしそうなら、おそらくバインドポリシーソフトを使いたいでしょう。 /etc/ldap/ldap.conf(または/etc/ldap.conf):

bind_policy soft
0
jtimberman