私はここ数か月にわたってLinux(Fedora 10、次に11)を採用しています(そしてそれを非常に楽しんでいます。まるでコンピューターを何度も発見するようなもので、学ぶべきことがたくさんあります)。
以下のように/ etc/sudoersファイルの最後の行にユーザーを追加したので、Sudoコマンドを実行するときにパスワードの入力を求められません。
MyUserName ALL =(ALL)NOPASSWD:ALL
これで、Sudoを使用してコマンドを実行するたびに、実際にタスクを実行する前に顕著な時間(〜10秒)が一時停止します。なぜこれが起こり、どのように修正すればよいですか? Fedora 11 x86 64でSudoバージョン1.7.1を実行しています。
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>
Syslogデーモンが正しく動作していることを確認してください。これは私に問題を引き起こしました。
次のコマンドを実行します
logger 'Hello world'
コマンドは妥当な時間内に戻りますか?
「Hello world」は/var/log/syslog
に表示されますか?
そうでない場合は、syslogデーモンがクラッシュしています。再起動すると問題が解決するはずです。
ネットワーク化されたマウントで読み取る必要のあるファイル/ディレクトリの1つですか、それとも低速のUSBデバイスからの読み取りをトリガーしていますか? straceを試して、どこが遅いかを確認してください。速すぎる場合は、
Sudo strace -r -o trace.log Sudo echo hi
各行は、前のシステムコールに入ってからの時間で始まります。
(最初のSudoが必要なようです。結果がどの程度混乱するかはわかりません。)
最近、同じ問題があることがわかりました。 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つは、非常に不快であるか、問題がありました。だから私は解決の順番を変えて、物事が再びすぐにうまくいった。
同じ問題が発生したため、/ var/log/auth.logとsyslogでエラーを確認しました。 LDAPサーバーにアクセスできず、すべての速度が低下していることがわかりました。
LDAPベースの認証を使用しなくなったので、/ etc/nsswitch.confからすべての「ldap」参照を削除しました
それ以来、すべてが再び魅力のように機能します。
場合によっては、ホスト名(/etc/sysconfig
/networkで構成されたもの)が/etc/hosts
ファイルに存在しないことがわかります。したがって、前述のファイルを追加すると、ファイルはすぐに開きます。
Fedoraについてはわかりませんが、Sudoがログイン元を確認する他のシステムを使用しました。DNSが適切に設定されていない場合、タイムアウトになるまでに時間がかかることがあります。これは、マシンにSSHで接続するときにも確認できます。プロンプトが表示されるまでには時間がかかります。
同じ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ポリシーモジュールをすぐにここに記述するか、または この答え のメソッドを使用できることを願っています。)
私にとって、インストールされているのはkrb5-user/config/localesでした。 /var/log/auth.logを調べて、これに気づきました。 apt-get removeを使用してそれらのパッケージをアンインストールし、修正しました。明らかにkerberos(pam_krb5)を必要とするコンピューターを使用している場合は、これらのパッケージを削除しないでください。
/ etc/hostsファイルを確認し、127.0.0.1のエントリがあることを確認します
( ソース )
NscdのようなDNSキャッシングアプリケーションを実行している場合は、ホストの問題を修正した後、不良DNSキャッシュを必ずクリアしてください。
/etc/init.d/nscd force-reload
私が持っているサンプルsudoers
ファイルを見ると、NOPASSWD:
ビットの後にスペースがあるはずです。
認証チェーンになんらかのタイムアウトがあるようです。 Sudoがどのように認証を試み、ボトルネックがないかを確認します。
システム化されたケース
私にとって、システムのメモリが不足し、多くのプロセスがクラッシュしました。私のシステムはsystemdに基づいており、そこで何かがクラッシュしました。私がやったことすべてを思い出すのは難しいですが、
systemctl status <any.service>
タイムアウトしますSudo reboot
(systemdベース)ソリューション
再起動で問題は解決しましたが、私にとっては絆創膏でした。あなたはまだあなたがメモリ不足/クラッシュした理由を見つける必要があります。
認証にLDAPを使用していますか?
もしそうなら、おそらくバインドポリシーソフトを使いたいでしょう。 /etc/ldap/ldap.conf(または/etc/ldap.conf):
bind_policy soft