eliminó / etc / hosts en un mac y ahora no puede sudo

0

Creo que cometí un error al editar / etc / hosts en texto sublime, porque inmediatamente después no pude ejecutar "sudo xxx". Pediría una contraseña, y luego nunca se resolvería una vez que la hubiera escrito.

Intenté editar / etc / hosts, pero siempre requería sudo, que nunca se resolvió, por lo que no funcionó. Al final, simplemente eliminé el archivo, pero ahora estoy atascado porque no puedo volver a crearlo sin acceso a sudo. ¿Alguna idea?

    
pregunta Jeremy Smith 11.04.2017 - 12:57

2 respuestas

1

El archivo / etc / hosts no está relacionado de ninguna manera con la capacidad de ejecutar sudo. Es probable que haya colocado el archivo de sudoers en un paso anterior.

Para resolver su problema, inicie el Modo de recuperación y abra la Terminal en la barra de menú > Utilidades.

  • Ejecute df para obtener el nombre del volumen de su sistema principal.
  • Cambie su directorio de trabajo a / Volumes // etc:

    cd /Volumes/Macintosh\ HD/etc #"Macintosh HD" is just an example name here
    
  • Copie los archivos de repuesto hosts ~ orig y sudoers ~ orig (o con nombres similares que puedan existir como "copia de seguridad" en / etc de forma predeterminada; verifique esto con ls !):

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

    Si no existen, cree el archivo de hosts y verifique el archivo de sudoers:

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

    El contenido del archivo hosts predeterminado es.

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

    Los permisos POSIX son root: wheel 644. Modifíquelo con chown y chmod si es necesario.

    / Volumes // usr / bin / nano / Volumes // etc / sudoers

    Un archivo de sudoers que funciona como mínimo (para escribir menos) se ve así:

    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
    

    Los permisos POSIX son root: wheel 440. Modifíquelo con chown y chmod si es necesario.

  • Reinicia tu Mac ingresando:

    reboot
    

Esto también se puede hacer en modo de usuario único después de montar el volumen raíz rw .

Después de recuperar la capacidad de ejecutar sudo, extráigalo desde la aplicación de instalación de macOS con Pacifist o desde una copia de seguridad o modifíquelo usted mismo con visuso . El contenido predeterminado es:

#
# 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
    
respondido por el klanomath 11.04.2017 - 16:19
0

Mientras inicias normalmente tu cuenta habitual, haz lo siguiente en la Terminal:

touch sudoers.ori hosts.ori
open -e sudoers.ori hosts.ori
  • Nota: Esto supone que estás en tu directorio de inicio cuando ejecutas estos comandos.

En el archivo hosts.ori , copie y pegue lo siguiente:

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

Luego guarda y cierra el archivo hosts.ori .

En el archivo sudoers.ori , copie y pegue lo siguiente:

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

Luego guarda y cierra el archivo sudoers.ori .

Ahora desde el inicio de la recuperación de HD en la Terminal, haga lo siguiente:

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 es el nombre predeterminado, sin embargo, si lo ha cambiado por alguna razón, cámbielo apropiadamente en la línea de comando.
respondido por el user3439894 11.04.2017 - 17:56

Lea otras preguntas en las etiquetas