pengembangan-web-mp.com

Mengapa perintah Sudo butuh waktu lama untuk dieksekusi?

Saya telah mengambil Linux (Fedora 10, lalu 11) selama beberapa bulan terakhir (dan sangat menikmatinya - ini seperti menemukan komputer lagi, begitu banyak hal untuk dipelajari).

Saya telah menambahkan pengguna saya ke baris terakhir dari file/etc/sudoers seperti yang ditunjukkan di bawah ini, sehingga saya tidak dimintai kata sandi ketika saya menjalankan perintah Sudo:

MyUserName ALL = (ALL) NOPASSWD: ALL

Sekarang setiap kali saya mengeksekusi perintah menggunakan Sudo, itu berhenti sejumlah waktu sebelum benar-benar melakukan tugas (~ 10 detik). Mengapa ini terjadi dan bagaimana saya memperbaikinya? Saya menjalankan Sudo versi 1.7.1 pada Fedora 11 x86 64.

88
Cuga

Saya mengajukan pertanyaan ini pada SO dan sudah dipindahkan ke sini. Yang mengatakan saya tidak lagi memiliki kemampuan untuk mengedit pertanyaan seolah-olah saya memilikinya, atau bahkan menerima jawaban yang benar, tetapi ini berubah menjadi alasan sebenarnya mengapa dan bagaimana menyelesaikannya:

Ditemukan di sini Pengguna "rohandhruva" di sana memberikan jawaban yang benar:

Ini terjadi jika Anda mengubah nama host selama proses instalasi.

Untuk mengatasi masalah, edit file/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

Pastikan daemon syslog Anda berfungsi dengan benar; ini menyebabkan masalah bagi saya.

Jalankan perintah berikut

logger 'Hello world'
  1. Apakah perintah kembali dalam jumlah waktu yang wajar?

  2. Apakah 'Hello world' muncul di /var/log/syslog?

Jika ini bukan masalahnya, daemon syslog telah macet. Restart harus memperbaiki masalah Anda.

25
MattB

Apakah salah satu file/direktori yang perlu dibaca pada mount jaringan, atau entah bagaimana memicu pembacaan dari perangkat usb lambat? Coba strace dan lihat di mana lambatnya; jika terlalu cepat, lakukan

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

Setiap baris akan mulai dengan waktu yang diambil sejak memasuki syscall sebelumnya.

(Sudo awal tampaknya diperlukan; Saya tidak tahu berapa banyak yang akan mengganggu hasil.)

11
ysth

Baru-baru ini saya menemukan bahwa saya memiliki masalah yang sama. Tidak ada penundaan Sudo dan kemudian tiba-tiba, sekitar penundaan 10-20 detik. Saya menentukan masalah spesifik menggunakan:

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

Seperti dirimu sendiri:

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

Dan kemudian temukan di mana panggilan sistem tergantung.

Dalam kasus SAYA, saya menemukan bahwa itu tergantung pada terjemahan DNS, tampaknya salah satu DNSen dalam daftar saya di /etc/resolv.conf sangat buzy atau menjadi buruk. Jadi saya mengubah urutan resolusi dan beberapa hal bekerja dengan cepat lagi.

9
mdpc

Saya menangani masalah yang sama, saya memeriksa /var/log/auth.log dan syslog untuk kesalahan. Ternyata server LDAP saya tidak dapat dijangkau dan memperlambat semuanya.

Saya tidak lagi menggunakan autent berbasis LDAP, jadi saya menghapus semua referensi "ldap" dari /etc/nsswitch.conf

Sejak itu semuanya berfungsi seperti pesona lagi.

5
Sakuraba

Dalam hal ini, ditemukan nama host (yang dikonfigurasi dalam /etc/sysconfig/jaringan) tidak ada di /etc/hosts file; jadi setelah menambahkan file yang disebutkan sebelumnya, file segera terbuka.

5
Zahid Hussain

Saya tidak yakin tentang Fedora, tetapi saya telah menggunakan sistem lain tempat Sudo akan memeriksa dari mana Anda masuk, yang jika DNS Anda tidak diatur dengan baik dapat memakan waktu lama hingga habis. Ini juga bisa dilihat saat SSH'ing masuk ke mesin - butuh waktu lama untuk menghasilkan Prompt.

5
Colin Coghill

Sel SELinux

Jika perintah Sudo yang sama adalah lambat hanya dalam daemon dan cepat pada baris perintah, maka itu disebabkan oleh SELinux yang paling mungkin. (SELinux = NSA Modul kernel Linux Peningkatan Keamanan, diaktifkan di Fedora secara default.)

Kasus umum adalah server http dan skrip khusus untuk manajemen server, dibatasi dalam sudoers:

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

Biasanya dalam kasus ini bahwa tidak ada apapun tentang SELinux yang dilaporkan dalam log audit ausearch -m avc -ts today, tetapi skrip berjalan cepat jika kami menonaktifkan sementara penegakan oleh setenforce 0. (lalu kembali aktifkan oleh setenforce 1)

Satu-satunya pesan yang relevan di log sistem (jurnalcrl) adalah ini setelah penundaan 25 detik:

... Sudo [...] pam_systemd (Sudo: session): Gagal membuat sesi: Tidak menerima balasan. Kemungkinan penyebabnya meliputi: aplikasi jarak jauh tidak mengirim balasan, kebijakan keamanan bus pesan memblokir balasan, batas waktu balasan kedaluwarsa, atau koneksi jaringan terputus.
... Sudo [...]: pam_unix (Sudo: session): sesi dibuka untuk root pengguna oleh (uid = 0)

Logging semua pesan SElinux "jangan-audit" yang dibungkam dapat diaktifkan oleh semodule -DB dan dinonaktifkan lagi oleh semodule -B.
(Saya harap saya segera menulis modul kebijakan SELinux untuk kasus ini di sini atau metode dari jawaban ini dapat digunakan.)

3
hynekcer

Bagi saya itu adalah krb5-user/config/locales sedang diinstal. Saya perhatikan ini dengan memeriksa /var/log/auth.log. Menggunakan apt-get remove untuk menghapus instalasi paket-paket itu. Jangan hapus paket-paket itu jika Anda menggunakan komputer yang membutuhkan kerberos (pam_krb5) jelas.

1
Halsafar

Periksa file/etc/hosts Anda dan pastikan Anda memiliki entri untuk 127.0.0.1

( sumber )

1
Ryan Emerle

Setelah memperbaiki masalah Host, pastikan Anda menghapus cache DNS yang salah jika Anda menjalankan aplikasi caching DNS seperti nscd:

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

Dari melihat sampel sudoers file yang saya miliki, saya percaya seharusnya ada spasi setelah NOPASSWD: bit.

1

Sepertinya Anda memiliki semacam batas waktu dalam rantai otentikasi Anda. Periksa bagaimana Sudo mencoba mengotentikasi dan mengawasi kemacetan.

0
towo

Case Systemd

Bagi saya, sistem saya sudah kehabisan memori dan banyak proses macet. Sistem saya berbasis di sekitar systemd dan sesuatu di sana telah crash. Sulit bagi saya untuk mengingat semua yang saya lakukan, tetapi:

  • systemctl status <any.service> akan habis
  • Saya tidak bisa Sudo reboot (berbasis sistemd)

Solusi

Restart memperbaiki masalah saya, tetapi bagi saya hanyalah bandaid. Anda masih perlu mencari tahu mengapa Anda kehabisan memori/macet.

0
Eric Fossum

Apakah Anda menggunakan LDAP untuk otentikasi?

Jika demikian, Anda mungkin ingin menggunakan kebijakan bind lunak. Di /etc/ldap/ldap.conf (atau /etc/ldap.conf):

bind_policy soft
0
jtimberman