rimosso / etc / hosts su un mac e ora non può sudo

0

Penso di aver commesso un errore modificando / etc / hosts all'interno del testo sublime, perché subito dopo non sono stato in grado di eseguire "sudo xxx". Richiedeva una password e quindi non si risolve mai una volta che l'ho digitato.

Ho provato a modificare / etc / hosts, ma ho sempre richiesto sudo, che non è mai stato risolto, quindi non ha funzionato. Alla fine ho appena cancellato il file, ma ora sono bloccato non potendo ricrearlo senza accedere a sudo. Qualche idea?

    
posta Jeremy Smith 11.04.2017 - 12:57
fonte

2 risposte

1

Il file / etc / hosts non è in alcun modo correlato alla possibilità di eseguire sudo. Probabilmente hai hosed il tuo file sudoers in un passaggio precedente.

Per risolvere il problema, avvia la modalità di recupero e apri Terminale nella barra dei menu > Programmi di utilità.

  • Esegui df per ottenere il nome del tuo volume di sistema principale.
  • Cambia la directory di lavoro in / Volumes // etc:

    cd /Volumes/Macintosh\ HD/etc #"Macintosh HD" is just an example name here
    
  • Copia gli host dei file di riserva ~ orig e sudoers ~ orig (o con nomi simili che possono esistere come "backup" in / etc per impostazione predefinita - controlla questo con ls !):

    cp hosts~orig hosts
    cp -i sudoers~orig sudoers #enter yes here
    

    Se non esistono, crea il file hosts e controlla il file sudoers:

    /Volumes/<name_of_main_volume>/usr/bin/nano /Volumes/<name_of_main_volume>/etc/hosts
    

    Il contenuto del file host predefinito è.

    ##
    # Host Database
    #
    # localhost is used to configure the loopback interface
    # when the system is booting.  Do not change this entry.
    ##
    127.0.0.1   localhost
    255.255.255.255 broadcasthost
    ::1             localhost 
    

    Le autorizzazioni POSIX sono root: wheel 644. Modifica questo con chown e chmod se necessario.

    / Volumi // usr / bin / nano / volumi // etc / sudoers

    Un file sudoers di lavoro minimo (per digitare meno!) assomiglia a questo:

    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"
    
    Defaults    lecture_file = "/etc/sudo_lecture"
    
    root        ALL = (ALL) ALL
    %admin      ALL = (ALL) ALL
    

    Le autorizzazioni POSIX sono root: wheel 440. Modifica questo con chown e chmod se necessario.

  • Riavvia il Mac inserendo:

    reboot
    

Questo può essere fatto anche in modalità utente singolo dopo aver montato il volume di root rw .

Dopo aver riacquistato la possibilità di eseguire sudo, puoi estrarlo dall'app di installazione macOS con Pacifist o da un backup o modificarlo tu stesso con visuso . Il contenuto predefinito è:

#
# Sample /etc/sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.

##
# Override built-in defaults
##
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"

Defaults    lecture_file = "/etc/sudo_lecture"

##
# User alias specification
##
# User_Alias    FULLTIMERS = millert, mikef, dowdy

##
# Runas alias specification
##
# Runas_Alias   OP = root, operator

##
# Host alias specification
##
# Host_Alias    CUNETS = 128.138.0.0/255.255.0.0
# Host_Alias    CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
# Host_Alias    SERVERS = master, mail, www, ns
# Host_Alias    CDROM = orion, perseus, hercules

##
# Cmnd alias specification
##
# Cmnd_Alias    PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less

##
# User specification
##

# root and users in group wheel can run anything on any machine as any user
root        ALL = (ALL) ALL
%admin      ALL = (ALL) ALL

## Read drop-in files from /private/etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /private/etc/sudoers.d
    
risposta data 11.04.2017 - 16:19
fonte
0

Mentre si avvia normalmente con il proprio account normale, effettuare le seguenti operazioni in Terminale:

touch sudoers.ori hosts.ori
open -e sudoers.ori hosts.ori
  • Nota: questo presuppone che tu sia nella tua directory Home quando esegui questi comandi.

Nel file hosts.ori , copia e incolla quanto segue:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost

Quindi salva e chiudi il file hosts.ori .

Nel file sudoers.ori , copia e incolla quanto segue:

#
# Sample /etc/sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.

##
# Override built-in defaults
##
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"

Defaults    lecture_file = "/etc/sudo_lecture"

##
# User alias specification
##
# User_Alias    FULLTIMERS = millert, mikef, dowdy

##
# Runas alias specification
##
# Runas_Alias   OP = root, operator

##
# Host alias specification
##
# Host_Alias    CUNETS = 128.138.0.0/255.255.0.0
# Host_Alias    CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
# Host_Alias    SERVERS = master, mail, www, ns
# Host_Alias    CDROM = orion, perseus, hercules

##
# Cmnd alias specification
##
# Cmnd_Alias    PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less

##
# User specification
##

# root and users in group wheel can run anything on any machine as any user
root        ALL = (ALL) ALL
%admin      ALL = (ALL) ALL

## Read drop-in files from /private/etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /private/etc/sudoers.d

Quindi salva e chiudi il file sudoers.ori .

Ora dall'avvio di Recovery HD in Terminale, fai quanto segue:

cd /Volumes/Macintosh\ HD/etc
cp /Volumes/Macintosh\ HD/Users/*/hosts.ori hosts
cp /Volumes/Macintosh\ HD/Users/*/sudoers.ori sudoers
chown root:wheel hosts
chown root:wheel sudoers
chmod 0644 hosts
chmod 440 sudoers
reboot
  • Nota: Macintosh HD è il nome predefinito, tuttavia se lo hai modificato per qualsiasi motivo, modificalo in modo appropriato nella riga di comando.
risposta data 11.04.2017 - 17:56
fonte

Leggi altre domande sui tag