errore sudo, è la modalità 0777, dovrebbe essere 0440


26

Ricevo errori sudo, come posso correggere questo errore?

sudo: /etc/sudoers is mode 0777, should be 0440
sudo: no valid sudoers sources found, quitting 

Come notato dagli utenti prima, l'uso di "chmod 0440 / etc / sudoers" quando il file sudoers.d / README ha il chmod sbagliato NON FUNZIONA.
kentfx,

Stai suggerendo che quando il problema è attivo /etc/sudoers.d/README, che l'errore può ancora dire sudo: /etc/sudoers is mode 0777, should be 0440?
Eliah Kagan,

Risposte:


26

Prima opzione

Seguendo questo post :

  1. Riavvia il PC
  2. Quando viene visualizzata la schermata di selezione dell'avvio di GRUB, selezionare la modalità di ripristino. (Se non viene visualizzato, premere il Shifttasto quando viene visualizzato il caricatore GRUB in basso).
  3. Dovrebbe apparire un terminale nero, a questo punto puoi eseguire questo comando (dovresti avere i privilegi di root):

    chmod 0440 /etc/sudoers
    

In alternativa

Dovrai mettere Ubuntu su un LiveCD, avviare LiveCD, montare la tua partizione Ubuntu sul disco rigido (Apri un browser di file, come Nautilus, e fai clic sulla tua partizione Ubuntu; oppure fai clic su Luoghi -> "Partizione xxGB / La tua partizione Ubuntu ").

Quindi, aprire un terminale all'interno della sessione LiveCD e digitare questi due comandi:

cd /media/<name of permanent ubuntu partition>/etc
sudo chmod 0440 sudoers

Problemi extra

In caso di errori (come pubblicato di seguito), seguire la richiesta di errore e regolare di conseguenza ogni file utilizzando uno dei due passaggi precedenti:

sudo apt-get update sudo: /etc/sudoers.d/README è la modalità 0777, dovrebbe essere 0440 sudo: / var / lib / sudo scrivibile dal non proprietario (040777), dovrebbe essere la modalità 0700 [sudo] password per

Correggi seguendo con:

chmod 0440 /etc/sudoers.d/README
chmod 0700 /var/lib/sudo

Entrambi questi comandi devono essere utilizzati in modo appropriato con i passaggi descritti sopra. Cambieranno le autorizzazioni del file associate a quel file. 0440 fornirà al proprietario (root) e al gruppo autorizzazioni di lettura e 0700 darà al proprietario (root), leggi, scriverà ed eseguirà le autorizzazioni.


Posso usare il comando sudo ma limitato. sudo apt-get update sudo: /etc/sudoers.d/README is mode 0777, should be 0440 sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700 [sudo] password for
user20698

@Alex: ESC è per l'eredità di GRUB giusto? Shift deve essere premuto per GRUB2.
Lekensteyn,

@ user20698: non è necessario sudoper il primo, il secondo dovrebbe essere fatto da un Live CD.
Lekensteyn,

Se sudoers è 0777, l'utente non dovrebbe essere in grado di eseguire chmod 0440 /etc/sudoerssenza sudoers poiché sudoers è scrivibile da tutti?
Seppo Erviälä,

2
@Seppo: no, solo il proprietario di un file può modificare le autorizzazioni del file.
Lekensteyn,

16

sudoè rotto in questa situazione, ma pkexec(il frontend della riga di comando per PolicyKit ) funziona ancora, quindi puoi risolverlo con un singolo comando. Non è necessario il riavvio.

pkexec chmod 0440 /etc/sudoers

Ciò presuppone che PolicyKit sia installato. Se questo è un sistema desktop (piuttosto che un server senza GUI), lo è.


4

Avvia in modalità di ripristino, scegli la shell di root e:

chmod 0440 /etc/sudoers

O se non vuoi riavviare puoi usare questa alternativa:

pkexec chmod 0440 /etc/sudoers
pkexec chmod 0440 /etc/sudoers.d/README

cambierà l'autorizzazione. Provalo funzionerà.


1
Perché stai chmodingingendo alcuni file 440e altri 0440? Non dovresti usare 0440uniformemente? E perché stai cambiando le autorizzazioni /etc/sudoers.d/READMEquando usi la pkexecstrada, ma non altrimenti? E che dire di altri file possibili in /etc/sudoers.d?
Eliah Kagan,

1

Cosa hai fatto per ottenere questi errori?

  • Se lo hai fatto: sudo chmod -R 777 /etchai bisogno di un Live CD per riparare questo.

    1. Avvia in un Live CD e seleziona "Provalo"
    2. Monta la tua partizione Ubuntu (o la partizione contenente /etcse hai messo /etcsu una partizione separata). Questo può essere fatto utilizzando un browser di file come Nautilus o il menu Luoghi
    3. Apri un Terminale andando su Applicazioni => Accessori => Terminale
    4. Determina la cartella della tua partizione Ubuntu, puoi elencare il contenuto delle partizioni montate usando ls -l /media. Probabilmente si chiama ubuntuo disk. Nei prossimi passi, assumerò ubuntu.
    5. Nel Terminale, impostare le autorizzazioni restrittive per impostazione predefinita:

      sudo find /media/ubuntu/etc -type f -exec chmod g-wx,o-rwx {} \;
      sudo find /media/ubuntu/etc -type d -exec chmod g-w,o-rwx {} \;
      
    6. Quindi, utilizzare il Live CD come punto di riferimento per ripristinare le autorizzazioni dei file. Il comando seguente modifica le autorizzazioni del file per l' /etc/media/ubuntuutilizzo della /etccartella sul Live CD come punto di riferimento. Modificherà solo le autorizzazioni su files ( -type f) e directory ( -type d) sullo stesso filesystem ( -xdev). Eventuali errori vengono scritti in ~/errors.logErrori come "file non trovato" indica che un file sul sistema è installato, ma non trovato sul Live CD. Il comando dal passaggio 5 dovrebbe impostare le autorizzazioni giuste per esso, ma per i migliori risultati, è meglio reinstallare i pacchetti.

      cd /media/ubuntu && sudo find etc -xdev \( -type f -o -type d \) -f -exec chmod --reference=/{} {} \; 2>~/errors.log
      
    7. Ora sicuro ~/errors.logda qualche parte (come http://paste.ubuntu.com/ ) in modo da poterlo aggiungere come commento a questa risposta in caso di problemi con le applicazioni.

1

In Ubuntu puoi prima colpire Ctrl+ Alt+ Tche apre il terminale. Successivamente è possibile copiare e incollare il comando seguente con Ctrl+ Ce incollare il terminale con Ctrl+ Shift+ V.

pkexec chmod 0440 /etc/sudoers

0

Per me, ho dovuto aggiungere un altro passo ai pkexecsuggerimenti, per questo , sono stato fortunato che mi sono imbattuto in 2 sessioni ssh quando ho fatto lo stupido errore:

  1. Apri 2 terminali
  2. Nel terminal 2, eseguire echo $$per ottenere PID
  3. Esegui pkttyagent --process PID_FROM_STEP2nel terminal 2
  4. Nel terminale 1, eseguire pkexec chmod 0440 /etc/sudoers
  5. Nel mio caso, dovevo anche correre pkexec chown root:root /etc/sudoers
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.