Home
» LINUX
»
Come eseguire sudo senza password su Linux
Come eseguire sudo senza password su Linux
È possibile eseguire sudo senza password aggiungendo una NOPASSWDregola alla policy sudoers. L'approccio più sicuro consiste nel consentire solo il comando amministrativo effettivamente necessario, anziché disabilitare la richiesta di password per ogni comando sudo.
Prima di modificare qualsiasi cosa, ricorda cosa fa questa impostazione: chiunque o qualsiasi cosa ottenga il controllo del tuo account con cui hai effettuato l'accesso potrebbe essere in grado di eseguire il comando consentito come root senza un ulteriore passaggio di autenticazione. Il manuale di sudoers documenta NOPASSWDcome il tag che rimuove l'autenticazione per i comandi corrispondenti.
Perché sudo -s non è un metodo sudo senza password
Il vecchio consiglio di eseguire il comando sudo -snon configura effettivamente l'utilizzo di sudo senza password. L' -sopzione avvia una shell con i privilegi di sudo, ma la policy di sudo potrebbe comunque richiedere l'autenticazione preliminare. Potresti anche vedere diversi comandi eseguiti senza un'ulteriore richiesta di autenticazione, perché sudo normalmente memorizza nella cache l'autenticazione riuscita per un breve periodo. Questo è diverso da una NOPASSWDregola permanente.
Eseguire uno specifico comando sudo senza password
Questo esempio consente all'utente alexdi riavviare Nginx senza password. Sostituisci il nome utente, il comando e gli argomenti con i valori che corrispondono al tuo sistema.
1. Conferma il tuo nome utente e il percorso del comando
Esegui i seguenti comandi come utente normale:
whoami
command -v systemctl
Il secondo comando potrebbe restituire un valore /usr/bin/systemctl. Utilizza il percorso riportato dal tuo sistema. Le regole di Sudoers dovrebbero identificare i comandi tramite il loro percorso completo.
Prima di scrivere la regola sudoers, verifica il nome dell'account e il percorso completo del comando.
2. Crea un file dedicato per la directory sudoers
Invece di modificare /etc/sudoersdirettamente, usa visudocon un file in /etc/sudoers.d:
sudo visudo -f /etc/sudoers.d/alex-nopasswd
Normalmente, per questa fase di configurazione, dovrai inserire la tua password. visudoè preferibile perché controlla la sintassi prima di accettare le modifiche. Il manuale di Ubuntu visudo nota anche che visudoblocca il file durante la modifica e controlla la presenza di errori di analisi.
Apri un file sudoers separato visudoanziché modificare il file di policy principale con un normale editor di testo.
3. Aggiungi la regola NOPASSWD più restrittiva di cui hai bisogno
Per l'esempio di riavvio di Nginx, aggiungere:
alex ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx
Questa regola consente l'esecuzione come root senza autenticazione solo del comando con gli argomenti specificati. Per consentire l'esecuzione di più comandi specifici, separare le specifiche dei comandi con delle virgole.
Se si desidera deliberatamente che ogni comando sudo per un determinato utente ignori l'autenticazione, la regola generale è:
alex ALL=(ALL:ALL) NOPASSWD: ALL
Questa soluzione è molto meno sicura e raramente rappresenta la scelta migliore su una workstation o un sistema condiviso. Una sessione utente compromessa avrebbe accesso diretto a privilegi di root illimitati.
Una regola specifica per il comando è più sicura della concessione di NOPASSWD: ALL.
4. Convalidare e testare la regola
Dopo aver salvato e chiuso l'editor, controlla la policy completa di sudoers:
sudo visudo -c
Non saltare questo controllo. La visudodocumentazione spiega che la policy di sudoers viene valutata nel suo complesso, quindi il controllo della configurazione completa permette di individuare problemi che potrebbero riguardare i file inclusi.
Quindi invalida tutte le credenziali sudo memorizzate nella cache ed esegui il test in modalità non interattiva:
sudo -k
sudo -n /usr/bin/systemctl restart nginx
Questa -nopzione indica a sudo di non richiedere la password. Se la regola corrisponde, il comando viene eseguito senza chiedere la password. Se l'autenticazione è comunque richiesta, sudo termina con un errore anziché attendere l'input. Ciò risulta sudo -nparticolarmente utile per gli script che non devono mai bloccarsi in attesa di una richiesta di password.
Convalida i criteri, cancella le credenziali memorizzate nella cache e utilizzalo sudo -nper confermare che il comando non richieda più una password.
Risoluzione dei problemi di sudo senza password
Il comando richiede ancora una password: verifica che il nome utente, il percorso del comando e gli argomenti corrispondano esattamente alla voce sudoers.
Il comando non è consentito: eseguilo sudo -lper verificare i privilegi assegnati al tuo account.
Il comando drop-in sembra essere ignorato: usa un nome file semplice come alex-nopasswd. Alcune configurazioni di sudoers ignorano i file in /etc/sudoers.di cui nomi contengono un punto o terminano con suffissi in stile backup.
È necessario annullare la modifica: riaprire il menu a tendina con sudo visudo -f /etc/sudoers.d/alex-nopasswd, rimuovere o restringere la regola, salvare ed eseguire sudo visudo -cnuovamente.
Buona pratica
Utilizza sudo senza password solo quando è strettamente necessario, ad esempio per un'azione di servizio strettamente controllata o un'attività di automazione. Preferisci un percorso di comando e degli argomenti precisi, evita di utilizzare sudo NOPASSWD: ALLquando possibile e mantieni la regola sudoers il più semplice possibile, compatibilmente con le esigenze dell'attività. In questo modo, si preserva la maggior parte della protezione offerta da sudo, eliminando al contempo la richiesta di password laddove sia effettivamente necessaria.