Domanda:
sudo: / etc / sudoers è di proprietà di uid 501, dovrebbe essere 0
kxxoling
2014-11-23 15:42:12 UTC
view on stackexchange narkive permalink

Per eseguire programmi come sudo senza password, ho modificato / etc / sudoers con contenuto sbagliato.

Quindi l'ho modificato di nuovo con l'editor di testo predefinito del Mac (il corso sudo non può essere utilizzato quando / etc / sudoers è sbagliato).

Ho provato a eseguire sudo di nuovo e ottenerlo errore:

  sudo: / etc / sudoers è di proprietà di uid 501, dovrebbe essere 0sudo: nessuna fonte sudoers valida trovata, uscita  

Cosa devo fare ? Non ricordo la password di root (forse non ho mai impostato la password di root prima).

Le autorizzazioni di riparazione di Utility Disco funzionano?
@Mark come farlo? Sto usando la versione cinese.
@Mark Funziona, ma ora ho ricevuto un errore di sintassi.
Ho riparato l'errore nel file sudoers, quindi ho riparato nuovamente le autorizzazioni. va bene adesso. Grazie mille @Mark
@Mark Rispondi alla mia domanda e ti sceglierò come accettato.
Nove risposte:
#1
+16
nohillside
2014-11-23 16:19:52 UTC
view on stackexchange narkive permalink

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

  mount -uw / chown root: wheel / etc / sudoerschmod 440 / etc / sudoersreboot  

per risolvere il problema e riavviare.

Solo per risparmiare un po 'di tempo ad altri che ho perso a scherzare con il file sudoers, i permessi DEVONO essere `440`, e i proprietari DEVONO essere` root: wheel`.Qualsiasi altra cosa farà fallire sudo.Non cercare di diventare intelligente con i link simbolici!`-r - r ----- 1 ruota radice`
lavorato, io <3 u @patrix.Questo è l'unico che ha funzionato per me, sono su `Sierra`, tutte le altre cose in tutti i siti non hanno funzionato per me.
subito dopo il montaggio eseguire: `chown 0 / private / etc / sudoers`
@MaksimKostromin Qual è il motivo per eseguirlo?
motivo per farlo, perché risolverà il problema del soggetto.è abbastanza e l'ho appena fatto
@MaksimKostromin I permessi standard per `/ etc / sudoers` sono 440 che vengono impostati dallo snippet sopra.Impostarli prima a 0 non fa nulla (e almeno a prima vista sembra dannoso).Anche il problema nella domanda è la proprietà sbagliata, non le autorizzazioni sbagliate ...
@nohillside, 0 è solo un UID, non sto usando chmod qui, sto usando chown, che fondamentalmente sta cambiando il proprietario del file.quindi dopo il comando che ho indicato, il file sudoers sarà di proprietà di 0 (cioè root), proprio come il messaggio di errore che ci dice: `è di proprietà di uid 501, dovrebbe essere 0`
@maksimkostromin ah, colpa mia.Quindi è lo stesso di "chown root ..." quindi :-)
sì, @nohillside, sta facendo la stessa cosa della tua seconda riga di codice, ma più breve e abbastanza per risolvere un problema che il creatore di quell'argomento ha (almeno sul mio ultimo Mac in questi giorni ..)
Grazie!Funziona su "High Sierra".Ma è necessario premere la combinazione "Cmd-S" all'avvio di Mac OS fino a quando non viene visualizzata la riga di comando.
Ho abilitato l'utente ROOT, quindi ho eseguito i comandi come sopra.Tutte le altre soluzioni sono fallite per me: chown root: wheel / etc / sudoers chmod 440 / etc / sudoers riavviare
Il keychord `Cmd-S` funziona anche per Mojave?L'ho provato e non ho ricevuto una sola shell utente.
#2
+6
mmmmmm
2014-11-23 18:37:25 UTC
view on stackexchange narkive permalink

Yosemite e le versioni precedenti di OSX mantengono informazioni su quali autorizzazioni devono avere i file di sistema (cioè i file che il sistema operativo installa). Documento di Apple

Per ripristinarlo, utilizza Disk Utility.app.
Seleziona il volume di avvio (chiamato per impostazione predefinita Macintosh HD) sul lato sinistro.
Fai clic sul pulsante Verifica o ripara i permessi del disco: quest'ultimo riapplicherà i permessi memorizzati.

Per modificare i sudoer in futuro utilizzerei visudo che controlla che la modifica sia valida

con la password di root che hai probabilmente non l'hai impostato prima: l'idea di sudo è che non devi mai usarlo e Apple disabilita il login di root per impostazione predefinita

non c'è più niente del genere su "sierra"
Non funziona con OS X El Capitan
Penso che abbiamo bisogno di aggiornare in qualche modo quel thread per correggere la risposta ad esempio dal prossimo post
macOS mojave non ha più questo.Qual è la soluzione adesso?
@andrew vedi i commenti sopra i tuoi e quindi prova https://apple.stackexchange.com/a/157775/237
#3
+6
Graham
2019-03-10 05:19:25 UTC
view on stackexchange narkive permalink

Per macOS Mojave, ecco cosa ha funzionato per me:

  1. Avvia in modalità di ripristino (Cmd + R durante l'avvio)
  2. Utility disco> Seleziona Macintosh HD e Monta
  3. Chiudi le utilità del disco
  4. Utilità> Terminale
  5. Digita: chown root: wheel "/ Volumes / Macintosh HD / etc / sudoers"
  6. Riavvia

Potrebbe anche essere necessario modificare la proprietà di ts, di nuovo nel Terminale:

  sudo su
sudo chown -R root: wheel / var / db / sudo / ts /
 
Perché riavvii la macchina dopo?E inoltre, perché stai facendo `sudo su`?
#4
+5
klanomath
2014-11-23 18:06:50 UTC
view on stackexchange narkive permalink
  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. Effettua una delle seguenti operazioni:

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

    Il file originale ha questo aspetto:

      # sudoers file. ## Questo file DEVE essere modificato con il comando 'visudo' come root. # Errore di l'uso di 'visudo' può causare errori di sintassi o di autorizzazione del file # che impediscono l'esecuzione di sudo. ## Consulta la pagina man di sudoers per i dettagli su come scrivere un file sudoers. ## Specifica dell'alias host # Specifica alias utente # Specifica alias cmnd # Default specificDefaults env_resetDefaults env_keep + = "BLOCKSIZE" Default env_keep + = "COLORFGBG COLORTERM" Default env_keep + = "__CF_USER_TEXT_ENCODING" Default env_keep + = "CHARSET LANG COLORTERM" Default env_keep + = "__CF_USER_TEXT_ENCODING" Default env_keep + = "CHARSET LANG COLORTERM" Default env_keep + = "__CF_USER_TEXT_ENCODING" Valori predefiniti env_keep + = "CHARSET LANG_METRO_COLORE_LANGUAGE_LCTIME_LANGUAGE_LANGUAGE_LANGUAGE_LANGUAGE_LCTIME_MECCANICA = "LINEE COLONNE" Impostazioni predefinite env_keep + = "LSCOLORS" Impostazioni predefinite env_keep + = "SSH_AUTH_SOCK" Impostazioni predefinite env_keep + = "TZ" Impostazioni predefinite env_keep + = "DISPLAY XAUTHORIZATION XAUTHORITY" Default env_keep + = "EDITOR VISUAL" Default env_keep + = "HOME MAIL" # Specifica alias Runas # Specifica privilegio utente root ALL = (ALL) ALL% admin ALL = (ALL) ALL # Rimuovi commento per consentire le persone nel gruppo ruota per eseguire tutti i comandi #% wheel ALL = (ALL) ALL # Stessa cosa senza password #% wheel ALL = (ALL) NOPASSWD: ALL # Samples #% users ALL = / sbin / mount / cdrom, / sbin / umount / cdrom #% users localhost = / sbin / shutdown -h now  

    Informazioni:

      macchina: ~ user $ ls -l / private / ecc / sudoers
    -r - r ----- 1 root wheel 1275 13 giu 2012 / private / etc / sudoers  

    L'uso di visudo per modificare il file corregge i permessi del file automaticamente

  6. Disabilita nuovamente l'utente root.

Se scopri che non puoi modificare il file tramite la riga di comando, aprilo utilizzando un'applicazione GUI come TextEdit.Ciò bypasserà la configurazione di sudo corrotta.
#5
+2
Kallados
2018-06-17 23:59:04 UTC
view on stackexchange narkive permalink

Ottimo e semplicemente per High Sierra: niente SUDO, niente ripristino, solo (verifica / riparazione permessi)

  1. Primo passaggio
 diskutil resetUserPermissions / `id -u` 
  1. Secondo elemento Scegli Cartella tramite Finder -> Informazioni -> sblocca e scegli Setting Wheel in basso-> Applica agli elementi inclusi

fatto!

https://support.apple.com/en-us/HT203538

Quindi, in parole semplici, assicurati prima di avere resetUserPermissions dalla riga di comando e poi andando dal comando Finder Vai spostati in / user / local / your_directory, fai clic con il tasto destro e sull'icona a forma di ingranaggio aggiungi i permessi di lettura-scrittura al tuo utente.
In che modo la reimpostazione dei permessi utente risolve i problemi con `/ etc / sudoers`?
#6
+2
Dan
2018-11-24 00:48:38 UTC
view on stackexchange narkive permalink

Nel terminale:

  1. Digita sh o sudo sh (nel mio caso ho impostato accidentalmente chown -R / quindi sudo sono io, non c'è più bisogno di sudo, usando sh )
  2. In sh , digita cd / var / db / sudo / , quindi esegui ls -ln per verificare se è lo stesso di questi:

      totale 0
    drwxr-xr-x 2501 0 68 23 ottobre 23:56 nome utente
    drwx ------ 3501 0102 24 novembre 00:57 ts
    
  3. quindi digita ls -la e otterrai questi:

      totale 0
    drwx - x - x 4 nome utente ruota 136 23 ottobre 23:56.
    drwxr-xr-x 80 nome utente ruota 2720 24 nov 01:55 ..
    drwxr-xr-x 2 root wheel 68 23 ottobre 23:56 nomeutente
    drwx ------ 3 root wheel 102 24 nov 00:57 ts
    

I risultati sopra mostrano che yourusername è impostato su wheel , cosa che non dovrebbe. Normalmente dovrebbe essere simile a questi:

  totale 0
drwx - x - x 4 root wheel 136 23 ottobre 23:56.
drwxr-xr-x 80 root wheel 2720 24 nov 01:55 ..
drwxr-xr-x 2 root wheel 68 23 ottobre 23:56 nomeutente
drwx ------ 3 root wheel 102 24 nov 00:57 ts
 

Vedi la differenza?

Ora vogliamo risolverlo. Ecco cosa ho fatto:

  1. Still in sh , ho digitato chown -R root: wheel / var / db / sudo / yourusername per cambiarlo in UID 0 invece di UID 501 come sopra caso
  2. Fai lo stesso per ts, chown -R root: wheel / var / db / sudo / ts / Ora controlla di nuovo il permesso con ls -ln e dovrebbe assomigliare a questo:

      totale 0
    drwxr-xr-x 2 0 0 68 23 ottobre 23:56 dan
    drwx ------ 3 0 0102 24 novembre 00:57 ts
    L'UID è ora impostato su 0 e non su 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à dell'UID 501.

  1. Sfino a sh , prima controlla i permessi eseguendo ls -ln / private / etc / sudoers e dovrebbe ottenere questo:

      -r - r ----- 1501 0 1563 14 nov 17:53 / private / etc / sudoers
    

Hai notato 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 controlla se l'autorizzazione cambia in questo:

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

Quindi prova sudo come faresti di nuovo e vedi se funziona.

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.

#7
+2
Gordon Davisson
2020-06-29 01:20:45 UTC
view on stackexchange narkive permalink

Puoi risolvere questo problema tramite AppleScript, senza bisogno di riavviare, o addirittura disconnettere & di nuovo, o una shell di root esistente, oppure ... Tutto ciò di cui hai bisogno è una password di amministratore valida.

Esegui questo comando:

  osascript -e 'do shell script "chown root: wheel / etc / sudoers; chmod 440 / etc / sudoers; chmod -N / etc / sudoers" con privilegi di amministratore'
 

... e quindi autenticarsi come amministratore quando richiesto.

Spiegazione: questo è un po 'indiretto.Utilizza il comando di shell osascript per eseguire un breve AppleScript che utilizza il comando do shell script per eseguire uno script di shell breve.Il motivo per la cosa shell->AppleScript->shell è usare l'opzione con privilegi di amministratore , che ha più o meno lo stesso effetto di sudo ma funzionerà anche se / etc / sudoersè completamente incasinato.

#8
+1
andrew
2019-09-22 16:40:07 UTC
view on stackexchange narkive permalink

Se è ancora pertinente, questa è la mia soluzione a questo problema.Non sto eseguendo l'avvio in modalità utente singolo.Funzionerà se hai la password di root

  su -
mount -uw /
chown root: wheel / etc / sudoers
chmod 440 / etc / sudoers
riavviare
 
#9
+1
farzadshbfn
2020-05-19 02:16:12 UTC
view on stackexchange narkive permalink

Questo ha funzionato per me: (nessuna password di root, ma è richiesto l'accesso come amministratore)

  1. Creato un altro account amministratore test
  2. Imposta manualmente il suo uid su 0 (fai clic con il pulsante destro del mouse su account> Opzioni avanzate)
  3. Riavvia il sistema, accedi tramite test (verranno visualizzati molti errori, annulla / ok tutti)
  4. Vai a cd / etc / e chown -R $ (whoami) sudoers (L'errore sudo scomparirà ora, ma rimuovendo test dobbiamo annullare tutto)
  5. Riavvia il sistema e accedi con il tuo account normale
  6. Imposta manualmente test uid su 502 (o più di 500 qualcosa che non è stato preso da altri amministratori)
  7. Rimuovi l'account test


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...