Ho eliminato per errore il file sudoers su Mac OS X; c'è un modo per recuperarlo?


9

Ho eliminato per errore il sudoersfile su Mac OS X; c'è un modo per recuperarlo?
E una volta recuperato, come si imposta sulla modalità 0440?

Risposte:


8

Se capisco correttamente il tuo problema, al momento non hai sudoers e stai provando a fare sudo e non funziona. In questo caso, per far funzionare sudo è possibile effettuare le seguenti operazioni:

  1. Crea il file sudoers nella tua cartella home. Puoi trovare il contenuto predefinito qui sudoers
  2. Apri la cartella "/ etc" nel Finder ("Vai" -> "Vai alla cartella ...").
  3. Ora copia il file sudoers dalla cartella della cartella home alla cartella / etc tramite Finder.
  4. Verrà richiesto di richiedere la password.
  5. Inserisci la password corretta e hai finito.

Per verificare che sudo funzioni correttamente cd /etce sudo vim sudoers. Dovresti essere in grado di visualizzare il file sudoers tramite l'editor vim. Qualsiasi operazione di lettura / scrittura in / etc richiederebbe il comando sudo.

So che questo è un po 'sorprendente che anche dopo non avere sudoers, tramite l'interfaccia utente possiamo fare operazioni in / etc. Ma ha funzionato per me :)


1
È davvero strano che l'equivalente della GUI di ciò che è impossibile dalla riga di comando funzioni. Immagino che il test Apple per i flussi di lavoro della GUI sia più approfondito della riga di comando. Grazie al cielo, questo post mi ha salvato.
Sridhar Sarnobat,

Buono a sapersi che ti ha aiutato.
Tanmay,

6

Suppongo che stai cercando di eseguire un sudocomando e ti sta dando un errore che /etc/sudoersnon ha le autorizzazioni corrette?

Se in precedenza hai concesso lo stato del tuo account Admin, dovresti essere in grado di correggere le autorizzazioni tramite la GUI. Apri la cartella "/ etc" nel Finder ("Vai" -> "Vai alla cartella ..."), quindi apri le sudoersproprietà del file. Fai clic sul lucchetto. Concedere il admingruppo read/write, l' systemutente read-only, il wheelgruppo read-onlye il everyonegruppo no access. Le autorizzazioni ora dovrebbero essere corrette.

Se non ti sei inserito nel admingruppo, dovrai riavviare OSX in modalità utente singolo ed eseguire il comando chmod 0440 /etc/sudoers.


6

Abilitare l'utente root utilizzando le preferenze di sistema, quindi creare / etc / sudoers mentre si è effettuato l'accesso come utente root utilizzando

touch /etc/sudoers; chmod 440 /etc/sudoers

Nota: poiché il comando viene eseguito come root in questo caso e l'id del gruppo /etcè 0, per impostazione predefinita dovrebbe essere di proprietà dell'utente e del gruppo corretti dopo la ricostruzione, ma se per qualche motivo non lo è, eseguire

chown root:wheel /etc/sudoers

Dopo aver creato, /etc/sudoersusa visudo per inserire questo codice:

# 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"

# 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
ALL ALL=(ALL)                   NOPASSWD:/opt/dplat/bin/Revision/CMUpdatePackage/Installer.app/Contents/MacOS/I  nstaller
ALL ALL=(ALL)     NOPASSWD:/opt/dplat/bin/UpdatePackageInstaller.app/Contents/MacOS/UpdatePackage    Installer

Se non sei un amministratore, puoi invece avviare il sistema in modalità utente singolo (ciò può essere fatto spegnendo il dispositivo e tenendo premuto il comando + s all'avvio) ed eseguendo:

mount -uw /

e sarai nel terminale con i privilegi di root e sarai in grado di eseguire i comandi sopra per configurare /etc/sudoers


3

Ho creato un file / tmp / sudoers con contenuto nella risposta di John Militer ed eseguito una variazione del comando tmm1.

osascript -e 'do shell script "cat /tmp/sudoers > /etc/sudoers; chown root:wheel /etc/sudoers" with administrator privileges'

Bello!!!


2

Le risposte sopra riguardano il contenuto predefinito del file, come spostarlo in posizione con Finder e modificarne le autorizzazioni. Tuttavia, sudo si lamenterà a meno che il proprietario del file sudoers non sia root. L'unico modo per cambiare il proprietario senza sudo è tramite questo comando:

osascript -e 'do shell script "chown root:wheel /etc/sudoers" with administrator privileges'


1
Questo sembra rispondere al massimo alla parte "Come si imposta la modalità 0440", che è già stata affrontata, ma non si occupa dell'aspetto di recupero. Dato che all'inizio dell'OP manca un file / etc / sudoers, in che modo li aiuta?
Jeff Schaller

Puoi creare il file con qualsiasi editor e spostarlo in posizione con Finder. La parte difficile sta cambiando il proprietario in root, che non è possibile con nessun altro metodo.
tmm1
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.