Вопрос: Почему команда sudo занимает много времени?


За последние несколько месяцев я подбирал Linux (Fedora 10, а затем 11) (и наслаждаюсь им очень - это все равно, что открывать компьютеры снова, так много всего, чему можно научиться).

Я добавил моего пользователя в последнюю строку файла / etc / sudoers, как показано ниже, так что я не получаю запрос на мой пароль при выполнении команды sudo:

MyUserName ALL = (ВСЕ) NOPASSWD: ALL

Теперь каждый раз, когда я выполняю команду с использованием sudo, она приостанавливает время, достаточное для выполнения задачи (~ 10 секунд). Почему это возможно и как я могу это исправить? Я запускаю версию Sudo 1.7.1 на Fedora 11 x86 64.


56


Источник


Технически это считается редактированием скрипта, верно? Это не сценарий программы?
NOPASSWD: считается угрозой безопасности и побеждает цель использования sudo в первую очередь.
Я могу это купить, но проблема остается в том, почему это так долго.
Откуда у этой машины есть пользователи и аутентификация? Возможно, LDAP, возможно, с Kerberos? - wzzrd
Возможный дубликат Каждый раз, когда я использую sudo, он зависает до завершения - Harry Tsai


Ответы:


Я задал этот вопрос на SO, и он переехал сюда. Тем не менее у меня больше нет возможности редактировать вопрос так, как если бы я его владел или даже принимал правильный ответ, но это оказалось верной причиной, почему и как ее решить:

Найдено здесь  Пользователь «rohandhruva» там дает правильный ответ:

Это происходит, если вы меняете   имя хоста во время процесса установки.

Чтобы решить проблему, отредактируйте файл   / и т.д. / хосты

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

81



Совершенно верно. Несколько удивительно, что дистрибутивы, подобные Fedora, не изменяют / etc / hosts, если вы меняете имя хоста во время установки, но что угодно. Это с открытым исходным кодом для вас! - dimo414
Это фиксировало мое медленное использование sudo, спасибо! Я редактировал / etc / hostname и просто забыл отредактировать файл / etc / hosts. - Joe
Добавление имени хоста в строку 127.0.0.1 или :: 1 может привести к привязке определенного программного обеспечения, связанного с сервером, к правильному имени хоста / IP / интерфейсу. Одним из таких примеров является Cloudera Manager, службы hadoop получают неправильное имя хоста и путают CM, потому что все они разрешают localhost. Я предлагаю прочитать другой ответ ниже для возможного решения. Это может или не может вызвать проблемы на отдельной рабочей станции, у которой не будет других компьютеров, подключенных к ней. - ddcruver
Это также может быть /etc/nsswitch.conf (по тем же причинам). Mine был настроен на «hosts: dns files» и поэтому он искал мое имя хоста на DNS-сервере с длинным таймаутом. Я изменил его на «hosts: files dns», и теперь он сначала будет выглядеть в / etc / hosts. Спасибо за этот ответ, который заставил меня посмотреть в nsswitch.conf! - Alan Porter


Убедитесь, что ваш демон syslog работает правильно; это вызвало проблему для меня.

Выполните следующую команду

logger 'Hello world'
  1. Возвращает ли команда в течение разумного промежутка времени?

  2. Появляется ли «Hello world» в /var/log/syslog?

Если это не так, демон syslog разбился. Перезапуск должен устранить вашу проблему.


19



Удивительно, что это была проблема для меня. Кто бы мог подумать. Решение для меня было просто перезапустить syslog. service rsyslog restart - MikeKulls
Тоже самое. service rsyslog restart исправлены мои медленные команды sudo. - Pedro Cordeiro
Удивительно, что это была проблема для меня. До этого весь запрос на сервер так медленно. Я просто хочу знать, почему? - michael wang


Является ли один из файлов / каталогов, который он должен читать на сетевом монтировании, или он каким-то образом запускает чтение с медленного устройства USB? Попробуйте strace и посмотрите, где он медленный; если это происходит слишком быстро,

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

Каждая строка будет начинаться со времени, затраченного с момента ввода предыдущего системного вызова.

(Первоначальное судо, кажется, необходимо, я не знаю, насколько это повлияет на результаты.)


10



Спасибо. Это на жестком диске, без USB или сетевого диска.
@Cuga: и что вы узнали из strace?
@oligofren: вам нужно сделать sudo strace - ysth


Недавно я обнаружил, что у меня такая же проблема. Не было никакой задержки судо, а затем внезапно, около 10-20 секундной задержки. Я определил конкретную проблему, используя:

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

Как вы:

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

А затем найдите, где висят системные вызовы.

В моем случае я обнаружил, что он висит на DNS-трансляции, по-видимому, один из DNSen в моем списке на /etc/resolv.conf был очень шумным или испортился. Поэтому я изменил порядок разрешения, и вещи poof снова работали быстро.


7





Я не уверен в Fedora, но я использовал другие системы, где sudo проверял бы где вы вошли в систему, что, если ваш DNS не настроен хорошо, может занять возраст до таймаута. Это также можно увидеть, когда SSH'ing в машину - требуется возрастов, чтобы придумать подсказку.


5





В этом случае можно найти имя хоста (которое было настроено в /etc/sysconfig/ network) не существует в /etc/hosts файл; поэтому при добавлении в вышеупомянутый файл файл открывается быстро.


4





У меня была аналогичная проблема, я исправил ее, разместив как имя хоста (например, mybox), так и полный вывод команды hostname (mybox.mydomain.com). Это очистило его. Пошел от 2 минут, чтобы открыть / etc / hosts для мгновенного доступа.


2





У меня была та же проблема, я проверил /var/log/auth.log и syslog на наличие ошибок. Оказывается, мой LDAP-сервер не может быть достигнут, и он замедляет все.

Я больше не использовал auth на основе LDAP, поэтому я удалил все ссылки «ldap» из /etc/nsswitch.conf

С тех пор все работает как шарм снова.


2



Почему вы отправляете явно несвязанный ответ (OP не использует LDAP) на пятилетний вопрос? - Sven♦
Потому что это может помочь кому угодно. Я проверил все, что упоминалось здесь, но ничего не помогло. Кто-то еще может сфокусироваться на правильном направлении с моим ответом, проверив, есть ли у него какие-либо проблемы с соединением LDAP в качестве основной причины медленной и невосприимчивой команды sudo. Это так же важно, как и ответы, связанные с DNS, в том, что что-то за крышками виновато, что не видно непосредственно пользователю. Я рассматриваю этот сайт как общий источник знаний, а не только как отдельный вопрос / тип ответа на сайте. Речь идет о сборе соответствующих знаний. - Sakuraba
Также, кто в черном аду, вы должны дискредитировать мою помощь. Этот сайт работает, потому что обмен знаниями стимулируется не потому, что люди занижены. Если вам это не нравится, вы имеете право игнорировать его. - Sakuraba