O primeiro sudo
que eu digite no meu servidor Ubuntu 14.04 é sempre lento. O prompt de senha é exibido imediatamente, mas depois que eu pressiono enter demora cerca de 10 a 15 segundos até que a saída seja impressa. Todos os comandos do sudo depois disso são executados instantaneamente.
Executar algo como sudo strace -S time -c sudo echo hi
não mostra nada útil nesse caso, já que o sudo de sudo echo hi
já é o segundo sudo e é executado rapidamente. Se algum tempo passar e eu tiver que digitar novamente a senha em uma sessão em execução, ela será lenta novamente.
Todas as soluções que encontrei foram sobre como adicionar seu nome de host como resolução para 127.0.0.1 no arquivo /etc/hosts
, o que eu fiz sem sucesso. su root
é executado instantaneamente. A única coisa que eu lembro de ter mudado nos últimos dias é a máscara de rede de uma sub-rede que o servidor está roteando, instalando samba, dnsutils e bind9. Mas nenhum desses processos está sendo executado e o problema permanece, no acesso físico, nas sessões ssh e nas sessões tmux.
EDIT: nova abordagem
Eu tentei executar sudo tcpdump -vvvi any > tcpdump.log
com todas as NICs desconectadas. O log mostra muitos dos seguintes itens:
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)
As mesmas entradas aparecem com o tcp instad do udp. Eu substituí o nome de domínio de nossa universidade por OURLOCALDOMAIN.
Agora eu acho que o kerberos pode ter algo a ver com isso, mas eu apaguei o /etc/krb5.conf e reiniciei, ainda sem alterações. Parece-me que o servidor tenta se validar em um servidor kerberos central de nossa rede universitária. Eu sei que alguns anos antes, esse IP estava registrado em um servidor que executava o samba para o nosso departamento. Poderia haver uma conexão? Eu mudei meu nome de host para o que foi usado naquela época, nenhuma mudança no comportamento do sudo. Lmwangi sugere algo sobre o PAM, sobre o qual eu tenho pouco conhecimento, então não sei como abordar isso.
Eu também lembrei que mudei do Heimdal Kerberos para o MIT Kerberos ao instalar o samba, porque eu tive problemas durante a instalação do samba.
Também vou tentar as idéias dos comentários nos próximos dias, mas estarei viajando por alguns dias para que isso leve algum tempo.
EDIT 2: Resolvido
Havia uma entrada de pesquisa de DNS legada no /etc/network/interfaces
que atrapalhava tudo. Eu me sinto muito idiota. Tudo funciona agora.