Accidentalmente eliminé el archivo sudoers en Mac OS X; ¿Hay alguna manera de recuperarlo?

9

Accidentalmente borré el sudoersarchivo en Mac OS X; ¿Hay alguna manera de recuperarlo?
Y una vez que lo has recuperado, ¿cómo lo configuras en el modo 0440?

rastrillo
fuente

Respuestas:

8

Si entiendo su problema correctamente, actualmente no tiene sudoers y está tratando de hacer sudo y no está funcionando. En este caso, para que sudo funcione, puede hacer lo siguiente:

  1. Crea el archivo sudoers en tu carpeta de inicio. Puede encontrar contenido predeterminado aquí sudoers
  2. Abra la carpeta "/ etc" en Finder ("Ir" -> "Ir a la carpeta ...").
  3. Ahora copie el archivo sudoers de la carpeta de inicio a la carpeta / etc a través del Finder.
  4. Se le solicitará una contraseña.
  5. Ingrese la contraseña correcta y ya está.

Para comprobar sudo está funcionando bien cd /etcy sudo vim sudoers. Debería poder ver el archivo sudoers a través del editor vim. Cualquier operación de lectura / escritura en / etc requeriría el comando sudo.

Sé que esto es un poco sorprendente, incluso después de no tener sudoers, a través de la interfaz de usuario podemos hacer operaciones en / etc. Pero funcionó para mí :)

Tanmay
fuente
1
De hecho, es extraño que el GUI equivalente de lo que es imposible desde la línea de comando funcione. Supongo que Apple prueba los flujos de trabajo de la GUI más a fondo que la línea de comandos. Gracias a Dios, esta publicación me rescató.
Sridhar Sarnobat
Es bueno saber que te ayudó.
Tanmay
6

¿Supongo que está intentando ejecutar un sudocomando y le está dando un error que /etc/sudoersno tiene los permisos correctos?

Si ya otorgó el Adminestado de su cuenta , debería poder corregir los permisos a través de la GUI. Abra la carpeta "/ etc" en Finder ("Ir" -> "Ir a la carpeta ..."), luego abra las sudoerspropiedades del archivo. Haz clic en el candado. Conceder el admingrupo read/write, el systemusuario read-only, el wheelgrupo read-onlyy el everyonegrupo no access. Los permisos ahora deberían ser correctos.

Si no se puso en el admingrupo, deberá reiniciar OSX en modo de usuario único y ejecutar el comando chmod 0440 /etc/sudoers.

George M
fuente
6

Habilite al usuario root usando las preferencias del sistema y luego cree / etc / sudoers mientras está conectado como usuario root usando

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

Nota: Dado que el comando se ejecuta como root en este caso, y la identificación del grupo /etces 0, por defecto debería ser propiedad del usuario y el grupo correctos después de la recreación, pero si por alguna razón no lo es, ejecute

chown root:wheel /etc/sudoers

Después de crear, /etc/sudoersuse visudo para insertar este código en él:

# 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

Si no es administrador, puede iniciar el sistema en modo de usuario único (esto se puede hacer apagando el dispositivo y manteniendo presionados los comandos + s al inicio) y ejecute:

mount -uw /

y estará en la terminal con privilegios de root, y podrá ejecutar los comandos anteriores para configurar /etc/sudoers

John Militer
fuente
3

Creé un archivo / tmp / sudoers con contenido en la respuesta de John Militer y ejecuté una variación del comando tmm1.

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

¡¡¡Agradable!!!

noelmcloughlin
fuente
2

Las respuestas anteriores cubren el contenido predeterminado del archivo, cómo moverlo a su lugar con Finder y cambiar sus permisos. Sin embargo, sudo se quejará a menos que el propietario del archivo sudoers sea root. La única forma de cambiar el propietario sin sudo es mediante este comando:

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

tmm1
fuente
1
Esto parece a la mayoría responden a la "¿cómo se establece en el modo 0440" parte, que ha ya sido abordado, pero no abordan el aspecto de recuperación. Dado que al OP le falta un archivo / etc / sudoers para empezar, ¿cómo les ayuda esto?
Jeff Schaller
Puede crear el archivo con cualquier editor y moverlo a su lugar con Finder. La parte difícil es cambiar el propietario a root, lo que no es posible a través de ningún otro método.
tmm1