Eu tenho adquirido o Linux (Fedora 10, depois 11) nos últimos meses (e gostando imensamente - é como descobrir computadores de novo, tantas coisas para aprender).
Adicionei meu usuário à última linha do /etc/sudoers
arquivo, conforme mostrado abaixo, para que não seja solicitada minha senha ao executar o sudo
comando:
MyUserName ALL=(ALL) NOPASSWD:ALL
Agora, toda vez que executo um comando usando sudo
, ele pausa uma quantidade notável de tempo antes de realmente executar a tarefa (~ 10 segundos). Por que isso pode ser e como posso corrigir isso? Estou executando o Sudo versão 1.7.1 no Fedora 11 x86 64.
Fiz essa pergunta no SO e ela foi movida para cá. Dito isso, não tenho mais a capacidade de editar a pergunta como se fosse minha, ou até mesmo aceitar a resposta correta, mas esse acabou sendo o verdadeiro motivo e como resolvê-lo:
Encontrado aqui O usuário "rohandhruva" dá a resposta certa:
Verifique se seu daemon syslog está funcionando corretamente; isso causou o problema para mim.
Execute o seguinte comando
O comando retorna dentro de um período de tempo razoável?
O 'Hello world' aparece em
/var/log/syslog
?Se este não for o caso, o daemon syslog travou. Reiniciá-lo deve resolver seu problema.
É um dos arquivos/diretórios que ele precisa ler em uma montagem em rede ou está de alguma forma acionando a leitura de um dispositivo USB lento? Tente strace e veja onde está lento; se passar muito rápido, faça
Cada linha começará com o tempo gasto desde a entrada na syscall anterior.
(O sudo inicial parece ser necessário; não sei o quanto isso perturbará os resultados.)
Recentemente descobri que estava com o mesmo problema. Não houve atraso sudo e, de repente, cerca de 10 a 20 segundos. Eu determinei o problema específico usando:
Como você mesmo:
E, em seguida, descubra onde as chamadas do sistema estão suspensas.
No MEU caso, descobri que estava pendurado em uma tradução de DNS, aparentemente um dos DNSen da minha lista
/etc/resolv.conf
estava muito cheio ou com problemas. Então eu mudei a ordem de resolução e as coisas funcionaram rapidamente novamente.Eu tive o mesmo problema, verifiquei /var/log/auth.log e syslog para erros. Acontece que meu servidor LDAP não pôde ser alcançado e deixou tudo mais lento.
Eu não usava mais a autenticação baseada em LDAP, então removi todas as referências "ldap" de /etc/nsswitch.conf
Desde então, tudo funciona como um encanto novamente.
Não tenho certeza sobre o Fedora, mas usei outros sistemas em que o sudo verificaria de onde você está conectado, o que, se o seu DNS não estiver bem configurado, pode levar muito tempo para expirar. Isso também pode ser visto ao fazer SSH na máquina - leva séculos para aparecer um prompt.
No meu caso, o hostname (que foi configurado em
/etc/sysconfig/network
) não existia no/etc/hosts
arquivo; então, ao adicioná-lo ao arquivo mencionado, o arquivo é aberto imediatamente.Eu tive um problema semelhante, consertei colocando o nome do host (por exemplo, mybox) e a saída completa do comando hostname (mybox.mydomain.com). Isso esclareceu tudo. Passou de 2 minutos para abrir /etc/hosts para acesso instantâneo.
Caso SELinux
Se o mesmo comando sudo for lento apenas em um daemon e rápido na linha de comando, provavelmente será causado pelo SELinux . (SELinux = módulo de kernel Linux com segurança aprimorada da NSA, habilitado no Fedora por padrão.)
Um caso típico é um servidor http e um script especial para gerenciamento de servidor, restrito em
sudoers
:É típico neste caso que nada sobre o SELinux seja relatado no log de auditoria
ausearch -m avc -ts today
, mas o script está indo rápido se desabilitarmos temporariamente a imposição porsetenforce 0
. (e depois habilitar de volta porsetenforce 1
)As únicas mensagens relevantes no log do sistema (journalcrl) são estas após o atraso de 25 segundos:
O registro de todas as mensagens silenciosas de "não auditar" do SElinux pode ser habilitado
semodule -DB
e desabilitado novamente porsemodule -B
.(Espero escrever em breve um módulo de política SELinux em breve para este caso aqui ou um método desta resposta possa ser usado.)
Verifique seu arquivo /etc/hosts e certifique-se de ter uma entrada para 127.0.0.1
( fonte )