Первый sudo всегда медленный


8

Первое, что sudoя вхожу на свой сервер Ubuntu 14.04, всегда медленно. Запрос пароля отображается сразу, но после того, как я нажму ввод, потребуется около 10-15 секунд, пока вывод не будет напечатан. Все команды sudo после этого выполняются мгновенно.

Запуск чего-то подобного sudo strace -S time -c sudo echo hiне показывает ничего полезного в этом случае, поскольку sudo from sudo echo hiуже является вторым sudo и выполняется быстро. Если какое-то время проходит, и мне приходится повторно вводить пароль в текущем сеансе, это снова медленно.

Все решения, которые я нашел, были о добавлении вашего имени хоста в качестве разрешения для 127.0.0.1 в /etc/hostsфайле, что я сделал безрезультатно. su rootвыполняется мгновенно. Единственное, что я помню, что менял в последние дни - это сетевая маска подсети, на которой сервер маршрутизирует, устанавливает samba, dnsutils и bind9. Но ни один из этих процессов не запущен, и проблема остается в физическом доступе, сессиях ssh, а также сессиях tmux.

РЕДАКТИРОВАТЬ: новый подход

Я пытался бежать, sudo tcpdump -vvvi any > tcpdump.log когда все NIC отключены. Журнал показывает много следующего:

18:35:09.453399 IP (tos 0x0, ttl 64, id 49112, offset 0, flags [DF], proto UDP (17), length 76)
    localhost.38498 > localhost.domain: [bad udp cksum 0xfe4b -> 0x1050!] 58546+ SRV? _kerberos._udp.KF.OURLOCALDOMAIN.DE. (48)
18:35:09.457412 IP (tos 0x0, ttl 64, id 49113, offset 0, flags [none], proto UDP (17), length 76)
    localhost.domain > localhost.38498: [bad udp cksum 0xfe4b -> 0x8fcd!] 58546 ServFail q: SRV? _kerberos._udp.KF.OURLOCALDOMAIN.DE. 0/0/0 (48)

Те же самые записи появляются с tcp instad от udp. Я заменил доменное имя нашего университета на OURLOCALDOMAIN.

Теперь я думаю, что Kerberos может иметь какое-то отношение к этому, но я удалил /etc/krb5.conf и перезагрузил компьютер, все еще без изменений. Мне кажется, что сервер пытается проверить себя на центральном сервере Kerberos из нашей университетской сети. Я знаю, что несколько лет назад этот IP был зарегистрирован на сервере, который запускал samba для нашего отдела. Может ли быть связь? Я изменил свое имя хоста на то, которое использовалось тогда, без изменений в поведении sudo. Lmwangi предлагает кое-что о PAM, о котором у меня мало знаний, поэтому я не знаю, как к этому подойти. Я также вспомнил, что переключился с Heimdal Kerberos на MIT Kerberos при установке samba, потому что у меня были проблемы при установке samba. Я также собираюсь попробовать идеи из комментариев в ближайшие дни, но я буду путешествовать в течение пары дней, так что это может занять некоторое время.

РЕДАКТИРОВАТЬ 2: Решено

Была старая запись поиска в DNS, /etc/network/interfacesкоторая все испортила. Я чувствую себя очень глупо. Теперь все работает.


1
Временная установка бита set-uid straceпозволит вам запустить его без первого sudo. Также может помочь использование -o <file>опции для сохранения результатов в файл для анализа.
garethTheRed

1
Это один. Затем добавьте sudo -kкешированные учетные данные. Я нашел strace -Tro sudo.log sudo echo hiэто полезным, так как последний столбец показывает время каждого звонка. grepдля unameи socketкак стартер.
garethTheRed

1
5.005153 секунд от -rопции (которая может быть удалена). Начните с поиска длинных звонков с помощью -Tопции - они в пределах <и >- 0,000097 с в вашем случае.
garethTheRed

1
Вы проверили ps, top и все файлы системного журнала на случай, если что-то еще вызывает медлительность?
mdpc

1
Вы можете опубликовать свою конфигурацию pam? straceв конечном итоге доставит вас туда, но это, вероятно, проблема конфигурации более высокого уровня. Большинство длительных пауз во время аутентификации возникают из-за невозможности доступа к удаленным серверам и необходимости ожидания тайм-аута. Может случиться так, что изменение подсети поместит сервер аутентификации в другую подсеть, как эта. sudoвременно сохраняет запись успешной авторизации, /varпоэтому, вероятно, последующие вызовы выполняются мгновенно.
Братчли

Ответы:


2

Я подозреваю, что ваш ящик пытается связаться с внешней службой аутентификации (подумайте о NIS / LDAP), используя PAM ...

Если я правильно понимаю PAM, вы не сможете увидеть поиск PAM в своих вызовах strace. Я бы посоветовал вам запустить tshark / tcpdump и посмотреть, сможете ли вы соотнести конкретный сетевой трафик с вашими попытками sudo. Подозреваемые здесь будут поиски DNS & | LDAP звонки.

tcpdump -i eth0 -w network.pcap -s0 -Av

Если вы выясните, что является причиной поиска, найдите соответствующий модуль PAM для редактирования и устранения проблемы. В качестве альтернативы, если это поиск DNS, просто добавьте запись / etc / hosts, чтобы подделать имя и перенаправить на localhost. Это сделает ваш sudo быстрым, так как поиск будет быстрым и будет перенаправлен на локальный хост, а сетевая транзакция быстро провалится, так как на локальном хосте ничего не прослушивается ...


Теперь это, кажется, идет в хорошем направлении. У меня в журнале много вызовов "bad udp cksum" и "bad tcp cksum". Это слишком долго, чтобы оставлять комментарии, поэтому я обновлю ОП через секунду.
zerweck
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.