Первое, что 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
которая все испортила. Я чувствую себя очень глупо. Теперь все работает.
sudo -k
кешированные учетные данные. Я нашел strace -Tro sudo.log sudo echo hi
это полезным, так как последний столбец показывает время каждого звонка. grep
для uname
и socket
как стартер.
-r
опции (которая может быть удалена). Начните с поиска длинных звонков с помощью -T
опции - они в пределах <
и >
- 0,000097 с в вашем случае.
strace
в конечном итоге доставит вас туда, но это, вероятно, проблема конфигурации более высокого уровня. Большинство длительных пауз во время аутентификации возникают из-за невозможности доступа к удаленным серверам и необходимости ожидания тайм-аута. Может случиться так, что изменение подсети поместит сервер аутентификации в другую подсеть, как эта. sudo
временно сохраняет запись успешной авторизации, /var
поэтому, вероятно, последующие вызовы выполняются мгновенно.
strace
позволит вам запустить его без первогоsudo
. Также может помочь использование-o <file>
опции для сохранения результатов в файл для анализа.