La pagina fornisce suggerimenti sull'utilizzo dell'utilità a riga di comando sudo
, sulla gestione
sudoers
e prevenire o risolvere i problemi che si presentano.
Cause dei problemi
Durante ogni esecuzione del comando sudo
, si verifica il seguente processo
per convalidare i sudoers
file:
- La sintassi viene verificata per verificarne la correttezza.
- I contenuti vengono analizzati per escludere alcuni errori logici.
- Proprietà e autorizzazioni controllate.
La convalida dei file sudoers
potrebbe non riuscire a causa di uno dei seguenti motivi
errori:
Errori di sintassi
Quando apporti modifiche a sudoers
, devi seguire specifiche regole di sintassi
. Qualsiasi deviazione da questa sintassi, incluso, a titolo esemplificativo, un
mancante, carattere aggiuntivo o una virgola inappropriata, il file potrebbe
non valido. L'invalidazione del file rende impossibile l'utilizzo dell'utilità sudo
.
Soluzione:
La soluzione consiste nell'utilizzare l'utilità visudo
per modificare i file sudoers
. it
convalida i contenuti del file prima del salvataggio e invia una notifica in caso di problemi. La
L'utilità visudo
è stata creata per modificare il file in modo sicuro.
I seguenti esempi 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 una delle seguenti cause:
- Un malinteso 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:
L'utente è tenuto a leggere attentamente la documentazione ufficiale e a rispettare le quando modifichi il file.
Google consiglia 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 inutilizzati
- Riferimenti ciclici
- Voci duplicate
Se vengono rilevati problemi, viene visualizzato un messaggio di avviso.
I seguenti esempi mostrano campioni sia logicamente corretti che errati:
Logicamente corretto
barbara ALL=(ALL:ALL) /usr/bin/ls
Logicamente errata
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
, i relativi
Anche un numero eccessivo di autorizzazioni dei file o una proprietà errata può causare l'errore sudo
in caso di errore.
Soluzione:
La descrizione di questi errori viene visualizzata nell'output dell'errore sudo
. Leggi attentamente la descrizione del messaggio di errore e provvedi
correzioni.
Di seguito è riportato un esempio della risposta corretta le autorizzazioni e la proprietà dei file
$ 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 quando sono presenti autorizzazioni ridondanti per tutti gli utenti gruppo di autorizzazioni:
$ 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 che
viene visualizzato per una proprietà 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
causano 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
. La conseguenza è l'impossibilità di utilizzare privilegi elevati per e bloccare così la loro attività sul server.Tuttavia, le conseguenze più distruttive e imprevedibili sono i guasti delle applicazioni che si basano sul comando
sudo
. In alcuni casi, ciò può causare l'applicazione fallisca completamente, causando comportamenti imprevisti, arresti anomali o perdita di dati. Un altro esempio è quando il comandosudo
viene chiamato da un durante la sequenza di avvio del sistema operativo e non va a buon fine. Può causare un errore del sistema operativo o bloccare la sequenza di avvio.Possibile accesso non autorizzato al sistema.
Un'altra conseguenza rischiosa è che eventuali problemi dei file
sudoers
possono causare accesso non autorizzato al sistema. Ciò può accadere a causa di un errore logico, quando le regole nei filesudoers
conferiscono ad alcuni utenti o gruppi un numero eccessivo autorizzazioni aggiuntive.Questo può accadere anche perché il proprietario del sistema disattiva temporaneamente o indebolisce le difese del sistema per poter accedere e risolvere il problema.
Ripristino in caso di problemi
Se perdi privilegi utente elevati o non puoi utilizzare il comando sudo
a causa di:
problemi con i file sudoers
, quindi utilizza l'account super user per il recupero.
Nei sistemi operativi simili a Unix, il super user è un account utente speciale con ID
uguale a 0, generalmente denominato root
. Il super user ha accesso completo
risorse di sistema e può eseguire qualsiasi attività amministrativa senza restrizioni.
Sebbene l'interazione con il sistema operativo per conto del superutente sia generalmente considerata non sicura, potrebbe essere l'unica opzione per determinate attività come il recupero dei file sudoers
.
L'accesso diretto come superutente espone il sistema operativo a rischi. Per evitare questo rischio, Google consiglia di utilizzare una funzionalità di script di avvio, poiché questo script eseguite 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:
Crea una copia di backup dello script di avvio corrente se è già in uso. L'approccio al backup dipende dalla configurazione dello script di avvio.
startup-script
Se i contenuti dello script sono impostati direttamente nel valore dei metadati, puoi copia il contenuto dello script nel bucket Cloud Storage locale o 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 corrente.Aggiorna lo script di avvio con la seguente 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ù su cosa fanno i comandi
-
mv /etc/sudoers /etc/sudoers.backup.$(date +"%s")
-
Questo comando crea una copia del file
/etc/sudoers
con un altro nome ed elimina il file originale. La nome del nuovo file contiene un timestamp alla fine per unicità (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 autorizzati Google Cloud 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 di 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 attiva 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 il file che hai 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 lo era in uso.
Passaggi successivi
- Scopri come recuperare una VM inaccessibile o danneggiata.
- Scopri come aggiungere un disco esistente a un'altra VM.