sudo: / etc / sudoers è di proprietà di uid 501, dovrebbe essere 0

6

Per eseguire programmi come sudo senza password, ho modificato / etc / sudoers con contenuti errati.

Poi l'ho ri-montato con l'editor di testo predefinito di Mac (non è possibile utilizzare sudo su / etc / sudoers è sbagliato).

Ho provato a eseguire sudo agin e ottenere questo errore:

sudo: /etc/sudoers is owned by uid 501, should be 0
sudo: no valid sudoers sources found, quitting

Cosa dovrei fare? Non riesco a ricordare la password di root (forse non ho mai impostato la password di root prima).

    
posta kxxoling 23.11.2014 - 10:42
fonte

5 risposte

5

Yosemite e OSX precedenti conservano informazioni su quali file di sistema debbano essere i permessi (cioè i file installati dal sistema operativo). Doc di Apple

Per ripristinarlo usa Disk Utility.app.
Seleziona il volume di avvio (di default chiamato Macintosh HD) sul lato sinistro.
Fai clic su Verifica o ripristina permessi del disco: quest'ultimo riapplicherà le autorizzazioni memorizzate.

Per modificare sudoers in futuro userò visudo che controlla che la modifica sia valida

re la password di root che probabilmente non l'hai impostata prima - l'idea di sudo è che non hai mai bisogno di usarlo e Apple disabilita l'accesso root per default

    
risposta data 23.11.2014 - 13:37
fonte
11

Puoi avviare la modalità utente singolo premendo Cmd-S all'avvio (vedi OS X : Come avviare in modalità singolo utente o verbale per i dettagli) che dovrebbe fornire una shell di root. Quindi esegui

mount -uw /
chown root:wheel /etc/sudoers
chmod 440 /etc/sudoers
reboot

per risolvere il problema e riavviare.

    
risposta data 23.11.2014 - 11:19
fonte
4
  1. Apri Directory Utility (/ System / Library / CoreServices /).
  2. Fai clic sull'icona del lucchetto per sbloccarlo, quindi inserisci il nome e la password dell'amministratore.
  3. Effettuate una delle seguenti operazioni:

    • Scegli Modifica > Abilita utente root, quindi inserisci una password utente root nei campi Password e Verifica.
    • Scegli Modifica > Cambia password di root, quindi inserisci una nuova password utente root. Non hai bisogno di una vecchia password
  4. Accedi a root
  5. Modifica sudoers con visudo come indicato nel file:

Il file originale ha il seguente aspetto:

# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
# Failure to use 'visudo' may result in syntax or file permission errors
# that prevent sudo from running.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification

# User alias specification

# Cmnd alias specification

# Defaults specification
Defaults    env_reset
Defaults    env_keep += "BLOCKSIZE"
Defaults    env_keep += "COLORFGBG COLORTERM"
Defaults    env_keep += "__CF_USER_TEXT_ENCODING"
Defaults    env_keep += "CHARSET LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE"
Defaults    env_keep += "LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME"
Defaults    env_keep += "LINES COLUMNS"
Defaults    env_keep += "LSCOLORS"
Defaults    env_keep += "SSH_AUTH_SOCK"
Defaults    env_keep += "TZ"
Defaults    env_keep += "DISPLAY XAUTHORIZATION XAUTHORITY"
Defaults    env_keep += "EDITOR VISUAL"
Defaults    env_keep += "HOME MAIL"

# Runas alias specification

# User privilege specification
root    ALL=(ALL) ALL
%admin  ALL=(ALL) ALL

# Uncomment to allow people in group wheel to run all commands
# %wheel    ALL=(ALL) ALL

# Same thing without a password
# %wheel    ALL=(ALL) NOPASSWD: ALL

# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now

Informazioni:

machine:~ user$ ls /private/etc/sudoers 
-r--r-----  1 root  wheel  1275 13 Jun  2012 /private/etc/sudoers
    
risposta data 23.11.2014 - 13:06
fonte
2

Grande e semplice per High Sierra-no SUDO, nessun recupero, solo (verifica / riparazione permessi)

  1. Primo passo
diskutil resetUserPermissions / 'id -u'
  1. Secondo elemento Scegli Cartella tramite Finder - > Informazioni - > sblocca e scegli Impostazione Ruota nella parte inferiore- e gt; Applica agli articoli inclusi

fatto!

link

    
risposta data 17.06.2018 - 20:59
fonte
1

Nel terminale:

  1. Digita sh o sudo sh (nel mio caso ho impostato per errore chown -R / quindi sudo sono io, non è più necessario sudo, utilizzando sh )
  2. In sh , digita cd /var/db/sudo/ , quindi esegui ls -ln per verificare se è uguale a questi:

    total 0
    drwxr-xr-x  2 501  0   68 Oct 23 23:56 yourusername
    drwx------  3 501  0  102 Nov 24 00:57 ts
    
  3. quindi digita ls -la e otterrai questi:

    total 0
    drwx--x--x   4 yourusername   wheel   136 Oct 23 23:56 .
    drwxr-xr-x  80 yourusername   wheel  2720 Nov 24 01:55 ..
    drwxr-xr-x   2 root  wheel    68 Oct 23 23:56 yourusername
    drwx------   3 root  wheel   102 Nov 24 00:57 ts
    

I risultati sopra mostrano che yourusername è impostato su wheel , che non è previsto. Normalmente dovrebbe assomigliare a questi:

total 0
drwx--x--x   4 root  wheel   136 Oct 23 23:56 .
drwxr-xr-x  80 root  wheel  2720 Nov 24 01:55 ..
drwxr-xr-x   2 root  wheel    68 Oct 23 23:56 yourusername
drwx------   3 root  wheel   102 Nov 24 00:57 ts

Vedi la differenza?

Ora, vogliamo aggiustarlo. Ecco cosa ho fatto:

  1. Ancora in sh , ho digitato chown -R root:wheel /var/db/sudo/yourusername per cambiarlo in UID 0 invece di UID 501 come sopra il caso
  2. Fai lo stesso per ts, chown -R root:wheel /var/db/sudo/ts/ Ora controlla di nuovo l'autorizzazione con ls -ln e dovrebbe apparire come segue:

    total 0
    drwxr-xr-x  2 0  0   68 Oct 23 23:56 dan
    drwx------  3 0  0  102 Nov 24 00:57 ts
    UID is now set to 0 and not 501.
    
  3. Ora facciamo lo stesso per .. e . eseguendo chown -R root:wheel /var/db/sudo/./ e poi chown -R root:wheel /var/db/sudo/../ , e otterrai risultati come No. 4 sopra.

Ora vogliamo correggere /etc/sudoers di proprietà di UID 501.

  1. Ancora in sh , controlla prima il permesso eseguendo ls -ln /private/etc/sudoers e dovrebbe ottenere questo:

    -r--r-----  1 501  0  1563 Nov 14 17:53 /private/etc/sudoers
    

Notare l'UID 501? Vogliamo che diventi UID 0 .

  1. Quindi, esegui questo comando chown -R root:wheel /private/etc/sudoers e poi ls -ln /private/etc/sudoers di nuovo per verificare se l'autorizzazione cambia in questo:

    -r--r-----  1 0  0  1563 Nov 14 17:53 /private/etc/sudoers
    

Quindi prova sudo come faresti di nuovo e vedi se questo è il trucco.

Con tutto ciò, devo ricordarti che non sono responsabile della tua macchina dopo aver seguito questi passaggi, ma almeno questo è ciò che funziona per me.

    
risposta data 23.11.2018 - 19:48
fonte

Leggi altre domande sui tag