La pagina fornisce suggerimenti sull'utilizzo dell'utilità a riga di comando sudo
, sulla gestione del
plug-in sudoers
e sulla prevenzione o sulla correzione dei problemi che si verificano.
Cause dei problemi
Durante ogni esecuzione del comando sudo
, viene messa in atto la seguente procedura
per convalidare i file sudoers
:
- La sintassi viene verificata per confermare che sia corretta.
- I contenuti vengono analizzati per escludere alcuni errori logici.
- Vengono controllate la proprietà e le autorizzazioni.
La convalida dei file sudoers
potrebbe non riuscire a causa di uno dei seguenti
errori:
Errori di sintassi
Quando apporti modifiche ai file sudoers
, devi seguire regole di sintassi
specifiche. Qualsiasi deviazione da questa sintassi, inclusi, a titolo esemplificativo, un carattere mancante o in eccesso o una virgola nel posto sbagliato, può rendere il file
non valido. L'invalidazione del file rende impossibile usare l'utilità
sudo
.
Soluzione
La soluzione è utilizzare l'utilità visudo
per modificare i file sudoers
. Conferma
la validità dei contenuti del file prima del salvataggio e invia una notifica in caso di problemi. L'utilità
visudo
è stata creata per modificare il file in modo sicuro.
Gli esempi riportati di seguito mostrano esempi di sintassi corretti ed errati:
Sintassi corretta
user ALL=(ALL) ALL
Sintassi errata
user ALL=(ALL), ALL
Esempio di errore di sintassi
$ sudo useradd username
/etc/sudoers:20:17: syntax error
user ALL=(ALL), ALL
^
Errori logici
Gli errori di questo tipo possono essere causati da uno dei seguenti fattori:
- Una mancata comprensione dei principi del plug-in
sudoers
. - Deviazioni dalla sintassi corretta.
Tuttavia, gli errori logici non vengono riconosciuti durante la convalida, perché non violano le regole di sintassi e sono quindi difficili da rilevare.
Soluzione
Durante la modifica del file devi leggere attentamente la documentazione ufficiale e rispettare i relativi principi.
Google suggerisce inoltre di utilizzare l'utilità visudo
per modificare i file
sudoers
, in quanto può rilevare alcuni tipi di errori logici, ad esempio:
- Alias non definiti o non utilizzati
- Riferimenti ciclici
- Elementi duplicati
Se vengono rilevati problemi, viene visualizzato un messaggio di avviso.
Gli esempi riportati di seguito mostrano esempi sia corretti sia non corretti dal punto di vista logico:
Logicamente corretto
barbara ALL=(ALL:ALL) /usr/bin/ls
Logicamente errato
barbara ALL=(4LL:ALL) /usr/bin/ls
^
barbara ALL=(ALL;ALL) /usr/bin/ls
^
bar6ara ALL=(ALL:ALL) /usr/bin/1s
^ ^
Autorizzazioni errate
Oltre agli errori causati dai contenuti dei file sudoers
,
anche le autorizzazioni dei file eccessive o una proprietà errata possono causare errori
nell'utilità sudo
.
Soluzione
Nell'output del comando sudo
non riuscito viene visualizzata una descrizione di questi
errori Leggi la descrizione del messaggio di errore e apporta le correzioni
necessarie.
Di seguito è riportato un esempio di autorizzazioni e proprietà dei file corrette
$ ls -l /etc/sudoers
-r--r----- 1 root root 700 Jan 1 12:00 /etc/sudoers
$ sudo useradd username
L'esempio seguente mostra l'errore visualizzato in caso di autorizzazioni ridondanti per il gruppo di autorizzazioni Tutti gli utenti:
$ ls -l /etc/sudoers
-r--r---w- 1 root root 700 Jan 1 12:00 /etc/sudoers
$ sudo useradd username
sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found, quitting
sudo: error initializing audit plugin sudoers_audit
L'esempio seguente mostra l'errore
visualizzato in caso diproprietà errata. In questo esempio, un utente con un ID
diverso da 0
(o un utente diverso da root
) è il proprietario del file:
$ ls -l /etc/sudoers
-r--r----- 1 user user 700 Jan 1 12:00 /etc/sudoers
$ sudo useradd username
sudo: /etc/sudoers is owned by uid 1000, should be 0
sudo: no valid sudoers sources found, quitting
sudo: error initializing audit plugin sudoers_audit
Per ulteriori informazioni sulla configurazione dei file sudoers
, leggi il
manuale Sudoers.
Per scoprire come gestire e utilizzare l'editor visudo
, consulta il manuale di Visudo.
Conseguenze dei problemi
I problemi nei file sudoers
comportano effetti negativi e possono influire sulla
funzionalità dell'intero sistema.
Il comando
sudo
non funziona più.Questa è la conseguenza più evidente dei problemi nei file
sudoers
. Comporta l'impossibilità di utilizzare privilegi elevati per gli utenti, il che blocca la loro attività sul server.Tuttavia, le conseguenze più dannose e imprevedibili sono rappresentate dagli errori delle applicazioni che si basano sul comando
sudo
. In alcuni casi, questo può causare un guasto generalizzato dell'applicazione, con conseguenti comportamenti imprevisti, arresti anomali o perdita di dati. Un altro esempio è quando il comandosudo
viene chiamato da un'applicazione durante la sequenza di avvio del sistema operativo e non va a buon fine, causando potenzialmente un errore del sistema operativo o un blocco della sequenza di avvio.Possibile accesso non autorizzato al sistema.
Un'altra conseguenza che comporta dei rischi è che i problemi nei file
sudoers
possono portare ad accessi non autorizzati al sistema. Questo può accadere a causa di un errore logico, quando le regole nei filesudoers
assegnano autorizzazioni eccessive ad alcuni utenti o gruppi.Può accadere anche perché il proprietario del sistema disattiva temporaneamente o indebolisce le difese del sistema per accedere e risolvere il problema.
Ripristino in caso di problemi
Se perdi i privilegi utente elevati o non riesci a utilizzare il comando sudo
a causa di
problemi con i file sudoers
, utilizza l'account super user per il ripristino.
Nei sistemi operativi di tipo Unix, il super user è un account utente speciale con ID
uguale a 0, che in genere viene chiamato root
. Il super user ha accesso completo alle
risorse di sistema e può eseguire qualsiasi attività amministrativa senza restrizioni.
Sebbene l'interazione con il sistema operativo per conto del super user sia generalmente considerata
non sicura, potrebbe essere l'unica opzione per determinate attività come il ripristino dei
file sudoers
.
L'accesso diretto come super user espone il sistema operativo a rischi. Per evitare questo rischio, Google consiglia di utilizzare una funzionalità di script di avvio, in quanto questo script viene eseguito per conto del super user.
Scopri di più sugli script di avvio di Compute Engine.
Per recuperare i file sudoers
con uno script di avvio, segui questi passaggi:
Crea una copia di backup dello script di avvio attuale se è già in uso. L'approccio per il backup dipende dalla configurazione dello script di avvio.
startup-script
Se i contenuti dello script sono impostati direttamente nel valore dei metadati, puoi copiarli nel bucket Cloud Storage, nel file locale o in qualsiasi altro spazio di archiviazione privato temporaneo.
startup-script-url
Se i contenuti dello script sono già nello spazio di archiviazione remoto e il suo indirizzo URL viene utilizzato, puoi semplicemente rimuovere temporaneamente la chiave di metadati
startup-script-url
per disattivare lo script di avvio attuale.Aggiorna lo script di avvio con questa sequenza di comandi:
mv /etc/sudoers /etc/sudoers.backup.$(date +"%s") && echo "%google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers && chown 0:0 /etc/sudoers && chmod 0440 /etc/sudoers
Scopri di più sui comandi e le loro funzioni
-
mv /etc/sudoers /etc/sudoers.backup.$(date +"%s")
-
Questo comando crea una copia del file
/etc/sudoers
con un nome diverso ed elimina il file originale. Il nome del nuovo file contiene un timestamp alla fine per ragioni di univocità (ad es.sudoers.backup.1672527600
). -
echo "%google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers
-
Questo comando crea il file eliminato in precedenza
/etc/sudoers
con una singola regola che consente agli utenti Google Cloud autorizzati con accesso alla VM di eseguire qualsiasi comando per conto di qualsiasi utente di sistema. Questa regola esiste sempre per impostazione predefinita in un file aggiuntivo/etc/sudoers.d/google_sudoers
. -
chown 0:0 /etc/sudoers
-
Questo comando imposta il proprietario del file
/etc/sudoers
su un utente il cui ID è0
e un gruppo di proprietari su un gruppo il cui ID è0
. -
chmod 0440 /etc/sudoers
-
Questo comando imposta le autorizzazioni per il file
/etc/sudoers
su sola lettura e consente solo al proprietario e al gruppo proprietario di leggere il file.
-
Arresta la VM, se è in esecuzione. Riavvia la VM per attivare l'esecuzione dello script di avvio.
Connettiti alla VM e modifica il file
sudoers
danneggiato per recuperarlo.sudo visudo /etc/sudoers.backup.TIMESTAMP
Salva le modifiche e sostituisci il file
/etc/sudoers
corrente con quello appena modificato.sudo mv /etc/sudoers.backup.TIMESTAMP /etc/sudoers
Assicurati che il problema originale relativo all'utilizzo del comando
sudo
e dei privilegi elevati sia stato risolto.Rimuovi lo script di avvio temporaneo e ripristina quello originale, se è stato utilizzato.
Passaggi successivi
- Scopri come ripristinare una VM inaccessibile o danneggiata.
- Scopri come aggiungere un disco esistente a un'altra VM.