Come modificare un file '/ etc / sudoers' non valido?

213

Come posso modificare un file sudoers non valido? Getta sotto l'errore e non mi consente di modificarlo di nuovo per risolverlo.

Ecco cosa succede:

$ sudo visudo

>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting
    
posta YumYumYum 30.10.2011 - 20:15

12 risposte

327

Su un moderno sistema Ubuntu (e su molte altre distribuzioni GNU / Linux), il fissaggio di un file sudoers corrotto è in realtà abbastanza semplice e non richiede il riavvio, utilizzando un CD live o l'accesso fisico alla macchina.

Per fare ciò tramite SSH, accedere alla macchina ed eseguire il comando pkexec visudo . Se si ha accesso fisico alla macchina, SSH non è necessario; basta aprire una finestra di Terminale ed eseguire il comando pkexec .

Supponendo che tu (o qualche altro utente) sia autorizzato a eseguire programmi come root con PolicyKit, puoi inserire la tua password, quindi eseguirà visudo come root , e puoi correggere il tuo /etc/sudoers .

Se hai bisogno di modificare uno dei file di configurazione in /etc/sudoers.d (che in raro in questa situazione, ma possibile), usa pkexec visudo -f /etc/sudoers.d/filename .

Se si dispone di una situazione correlata in cui è necessario eseguire ulteriori comandi di amministrazione del sistema come root per risolvere il problema (anche raro in questa circostanza, ma comune in altri), è possibile avviare una shell di root interattiva con pkexec bash . In generale, qualsiasi comando non grafico che avresti eseguito con sudo può essere eseguito con pkexec .

(Se ci sono più account utente sul sistema autorizzato a eseguire programmi come root con PolicyKit, quindi per ognuna di queste azioni, ti verrà chiesto di selezionare quale utilizzare, prima di essere richiesto per la tua password.)

Se questo non funziona, ad esempio se non ci sono utenti autorizzati a eseguire programmi come root tramite PolicyKit, quindi avviare da un Live CD di Ubuntu (come il CD che probabilmente hai usato per installare Ubuntu) e montare il filesystem per il sistema installato. Puoi farlo eseguendo sudo parted -l per visualizzare le tue partizioni - probabilmente c'è solo una partizione ext4, e questo è il filesystem di root.

Supponiamo che il filesystem di root del sistema Ubuntu installato sia su / dev / sda1. Quindi puoi montarlo con sudo mount /dev/sda1 /mnt . Quindi puoi modificare il file sudoers del sistema installato con sudo nano -w /mnt/etc/sudoers . Oppure, ancora meglio, puoi modificarlo con

sudo visudo -f /mnt/etc/sudoers

(che impedirà di salvare un file sudoers con sintassi errata).

    
risposta data Eliah Kagan 30.10.2011 - 20:45
47

Usa sempre visudo per modificare il tuo file sudoers, non modificarlo mai direttamente. Ti impedirà di salvarlo su disco a meno che non lo convalidi.

    
risposta data Caesium 20.11.2011 - 18:08
20

Digitare:

pkexec visudo

Quindi modifica l'ultima riga

#includedir /etc/sudoers

A:

#includedir /etc/sudoers.d

Dovrebbe risolvere il tuo problema.

    
risposta data Andrej Burcev 21.02.2013 - 19:23
11

se qualcun altro come me non ha installato pkexec , o non è stato in grado di eseguire vi, visudo, nano o altri editor per modificare il file sudoers, si può essere certi con questo processo. Sono stato salvato con questo:

  • riavvio
  • tieni premuto il tasto MAIUSC durante l'avvio per avere l'opzione per la modalità di ripristino (inserirla)
  • inserisci la riga di comando come root (seconda ultima opzione nel mio menu di grub)
  • rimonta il dispositivo di avvio per rw e applica exec right per l'utente e modifica file

    mount -n -o remount,rw /
    chmod u+x /etc/sudoers
    nano /etc/sudoers
    

risolvi questo errore e sii felice:)

    
risposta data Kresimir Pendic 20.10.2014 - 23:40
6

Non c'è niente di sbagliato #include sudoer.d rimuovere #include sudoer.d non farà alcuna differenza.

Ma assicurati di non avere errori di sintassi. Ho avuto lo stesso problema ma ho impiegato ore per risolverlo e ho capito che si tratta di errori di sintassi. Fai riferimento al manuale e fallo bene.

Ad esempio Dì il tuo nome utente è: dolly Ho usato seguendo che è sbagliato

 dolly ALL = (ALL) ALL NO PASSWD: ALL

la sintassi corretta è

dolly ALL = (ALL) ALL //give permission to everything, not good

o

dolly ALL=(ALL) NOPASSWD:/usr/bin/thurderbird //good, give specific permission

spero che questo aiuti

    
risposta data Thusitha Nuwan 03.07.2012 - 01:15
6

Se hai incasinato il tuo file sudoers , dovrai:

  • Riavvia in modalità di ripristino (hit escape durante l'avvio, scegli l'opzione della modalità di ripristino nella schermata di grub)
  • Scegli l'opzione "Abilita il collegamento in rete" (se non lo fai il tuo filesystem sarà montato in sola lettura, chi lo sa)
  • Scegli l'opzione 'Trascina nella root shell'
  • esegui visudo , correggi il tuo file
  • Riavvia con l'opzione grub normale

fonte: - link

    
risposta data streak 14.12.2012 - 11:59
3

esegui la modalità di ripristino, quindi digita

chown -R root:root /etc/sudoers.d
chmod u=rwx,g=rx,o=rx /etc/sudoers.d/
chmod u=r,g=r,o= /etc/sudoers.d/*

solo il gruppo e la root utente dovrebbero avere letto privelege

    
risposta data kosaidpo 20.11.2011 - 18:11
2

Puoi modificare la tua voce di avvio anche in grub.

Riavvia semplicemente il tuo pc e aspetta che grub mostri. Quindi premere "e" sulla voce "Ubuntu" per modificarlo.

Cerca una riga con "linux=" o "kernel=" e aggiungi semplicemente un "singolo" alla fine di quella linea.

Quindi premere F10 per avviare questa voce di avvio modificata temporaneamente. Questo ti darà una shell (senza GUI) con i diritti di root e potrai modificare il file sudoers con s.th. come nano / etc / sudoers torna al suo stato precedente.

Quindi riavvia e fai.

    
risposta data Markus Ressel 13.01.2013 - 05:41
2

Puoi anche accedere come root su una console tty con Ctrl + Fn ( Fn da 1 a 6) ed eseguire% % co_de.

    
risposta data magisterludi 09.03.2013 - 08:12
2
pkexec visudo

quindi ripristina i tuoi errori

    
risposta data Bhavesh Gabani 01.01.2014 - 09:23
0

Ho trovato il bug. È nelle ultime due righe del file /etc/sudoers predefinito. Rimuovi le seguenti voci dalla fine del file / etc / sudoers con visudo .

#includedir /etc/sudoers.d
    
risposta data George Van Tuyl 23.02.2012 - 22:57
0

In Ubuntu 16.04 in esecuzione su una VirtualBox (non dovrebbe fare la differenza), i metodi di cui sopra non hanno funzionato per me (riga non valida alla fine del file). Che cosa ha funzionato è stato:

  1. Riavvia VirtualBox
  2. Lascia che avvenga normalmente, finché non richiede il tuo nome utente & amp; password nella console
  3. Accedi normalmente con il tuo nome utente
  4. Quindi quando finisci nella console (a patto che la tua casella non si avvii in una GUI), dai semplicemente il comando su - e poi inserisci la password del tuo nome utente.
  5. Ora dovrebbe finire nel prompt [email protected]:~# , se /etc/sudoers non è troppo rotto o vuoto. Non sono sicuro di cosa succederebbe in quel caso.
  6. Quindi puoi semplicemente eseguire visudo e correggere il file.
  7. Quindi Ctrl + X e verrà richiesto Salva il buffer modificato. Premi Y e Enter
  8. Riavvia la scatola e dovrebbe funzionare ora.

Nel caso in cui /etc/sudoers sia vuoto o manchi qualcosa, e puoi modificarlo, ecco il mio contenuto:

Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

root ALL=(ALL:ALL) ALL

%admin ALL=(ALL) ALL

%sudo ALL=(ALL:ALL) ALL
    
risposta data Juha Untinen 14.08.2018 - 11:40

Leggi altre domande sui tag