Primo sudo sempre lento


8

Il primo sudoche inserisco sul mio server Ubuntu 14.04 è sempre lento. La richiesta della password viene visualizzata immediatamente, ma dopo aver premuto Invio occorrono circa 10-15 secondi prima che l'output venga stampato. Tutti i comandi sudo dopo questo vengono eseguiti immediatamente.

L'esecuzione di qualcosa del genere sudo strace -S time -c sudo echo hinon mostra nulla di utile in questo caso, poiché il sudo di sudo echo hiè già il secondo sudo ed esegue velocemente. Se passa un po 'di tempo e devo reinserire la password in una sessione in corso, è di nuovo lento.

Tutte le soluzioni che ho trovato riguardavano l'aggiunta del nome host come risoluzione per 127.0.0.1 nel /etc/hostsfile, cosa che non ho fatto nulla. su rootesegue all'istante. L'unica cosa che ricordo di aver cambiato negli ultimi giorni è la maschera di rete di una sottorete che il server sta instradando, installando samba, dnsutils e bind9. Ma nessuno di questi processi è in esecuzione e il problema rimane, nell'accesso fisico, sessioni ssh e sessioni tmux.

EDIT: nuovo approccio

Ho provato a correre sudo tcpdump -vvvi any > tcpdump.log mentre tutte le schede di rete sono disconnesse. Il registro mostra molte delle seguenti:

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)

Le stesse voci vengono visualizzate con tcp instad di udp. Ho sostituito il nome di dominio della nostra università con OURLOCALDOMAIN.

Ora penso che Kerberos potrebbe avere qualcosa a che fare con esso, ma ho eliminato /etc/krb5.conf e riavviato, ancora nessuna modifica. Mi sembra che il server tenti di convalidarsi su un server Kerberos centrale della nostra rete universitaria. So che alcuni anni prima, questo IP era registrato su un server che eseguiva samba per il nostro dipartimento. Potrebbe esserci una connessione? Ho cambiato il mio nome host con quello usato allora, nessun cambiamento nel comportamento sudo. Lmwangi suggerisce qualcosa su PAM, di cui ho poca conoscenza, quindi non so come affrontarlo. Mi sono anche ricordato di essere passato da Heimdal Kerberos a MIT Kerberos durante l'installazione di samba, perché ho avuto problemi durante l'installazione di samba. Proverò anche le idee dai commenti nei prossimi giorni, ma viaggerò per un paio di giorni, quindi potrebbe richiedere del tempo.

EDIT 2: risolto

C'era una voce di ricerca DNS nella legacy /etc/network/interfacesche incasinava tutto. Mi sento molto stupido. Ora funziona tutto.


1
L'impostazione temporanea del bit set-uid straceti consentirà di eseguirlo senza il primo sudo. Potrebbe anche essere utile utilizzare l' -o <file>opzione per salvare l'output in un file per l'analisi.
garethTheRed

1
È lui. Quindi seguilo con sudo -kper rimuovere le credenziali memorizzate nella cache. Ho trovato strace -Tro sudo.log sudo echo hiutile in quanto l'ultima colonna mostra l'ora di ogni chiamata. grepper unamee socketcome antipasto.
garethTheRed

1
5.005153 secondi è -rdall'opzione (che potrebbe essere eventualmente rimossa). Inizia cercando le chiamate lunghe -Tdall'opzione: sono quelle entro <e >- 0,000097 sec nel tuo caso.
garethTheRed

1
Hai controllato ps, top e tutti i file di registro di sistema nel caso in cui ci sia qualcos'altro che potrebbe causare la lentezza?
mdpc,

1
Puoi pubblicare la tua configurazione pam? stracealla fine ti porterà lì, ma questo è probabilmente un problema di configurazione di livello superiore. Le pause più lunghe durante l'autenticazione sono dovute al mancato accesso ai server remoti e alla necessità di attendere un timeout. È possibile che la modifica della sottorete inserisca il server di autenticazione su una sottorete diversa da questa. sudosalva temporaneamente un record di autenticazione riuscita sotto, /varquindi questo è probabilmente il motivo per cui le successive invocazioni passano istantaneamente.
Bratchley,

Risposte:


2

Sospetto che la tua casella tenti di contattare un servizio di autenticazione esterno (pensa a NIS / LDAP) usando PAM ...

Se avessi capito bene PAM, non saresti in grado di vedere la ricerca PAM nelle tue chiamate strace. Ti suggerirei di eseguire tshark / tcpdump e vedere se riesci a correlare il traffico di rete specifico ai tuoi tentativi di sudo. I sospetti qui sarebbero ricerche DNS e | Chiamate LDAP.

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

Se scopri cosa sta causando le ricerche, scopri il modulo PAM pertinente per modificare e risolvere il problema. In alternativa, se si tratta di una ricerca DNS, basta aggiungere una voce / etc / hosts per fingere il nome e reindirizzare a localhost. Questo renderà il tuo sudo veloce poiché la ricerca sarà veloce e reindirizzerà al localhost e la transazione di rete fallirà rapidamente poiché non c'è nulla in ascolto su localhost ...


Ora sembra che vada in una buona direzione. Ho molte chiamate "bad udp cksum" e "bad tcp cksum" nel mio registro. È troppo lungo per pubblicare un commento, quindi aggiornerò l'OP tra un secondo.
zerweck,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.