¿Cómo preparo un inicio de sesión raíz temporal antes de editar sudoers?

Quiero modificar mis capacidades de sudo en mi mac, para evitar solicitudes de contraseña al iniciar postgres, entre otras cosas. Estoy leyendo Sudo Mastery de Michael Lucas y, en general, tengo una buena idea sobre cómo modificar las entradas y usar visudo .

Sin embargo, Michael señala que, independientemente de lo que haga, editar sudoers es intrínsecamente inseguro y puede dejarlo fuera de su máquina. Y hace todo lo posible para advertir a las personas que activen un inicio de sesión raíz, especialmente en macOS. Una vez que su archivo sudoers esté bien y lo haya confirmado con un reinicio, siempre puede deshabilitar la raíz.

Quiero decir, si solo está copiando los sudoers originales y luego, cuando las cosas explotan, arranque seguro, vaya a la Terminal y restaure los sudoers respaldados , está bien. Pero quiero estar 110% seguro de que no me bloquearán.

Nota: Es muy posible que pruebe primero con los sudoers de una máquina virtual Linux, pero aún quiero tener una ruta de escape.

En macOS Mojave, teniendo en cuenta las diversas limitaciones de seguridad intencionales de Apple en torno a arranques seguros y SIP, ¿cuáles son los pasos más simples para crear una puerta trasera de inicio de sesión raíz temporal ?

Esta es la configuración más increíble para una respuesta de YAGNI. Bienvenido a macOS con instantáneas APFS, recuperación y recuperación de Internet.
Confío en que lo consigas todo a tiempo. Respuestas sorprendentes aquí ya, no hay prisa por profundizar más de lo que desea. Es una pena que solo otra persona le haya dado un +1 hasta ahora. Gran pregunta.
ok, bueno, txs @bmike. Te digo la verdad, originalmente pensé que tu comentario tenía la intención de ser sarcástico, pero supongo que no entendí bien tu significado. Este foro parece estar bien dividido entre los usuarios habituales de macOS y algunos usuarios de tipo terminal/Unix, pero sudoers probablemente sea bastante oscuro para las personas que no son administradores de sistemas, por lo que espero que siga siendo una pregunta bastante desapercibida.
Has dado en el clavo: hay un grupo de personas a las que les encantará responder a tu pregunta: una bienvenida muy cálida. Incluso podría agregar una falta total de respuesta que explique que no necesita root para hacer nada de lo que pida, pero contácteme en Ask Different Chat si tiene curiosidad acerca de esa vía; dejemos las respuestas que tiene por ahora ... Yo era serio en decir impresionante.
¡No incluya la solución en la pregunta, publíquela como una respuesta a continuación!

Respuestas (3)

No se requiere una puerta trasera, de hecho, realmente no se requiere nada (ni siquiera una copia de seguridad) para editar el archivo sudoers . No puede quedarse fuera de su máquina.

Sin embargo, una copia de seguridad ( sudo cp /etc/sudoers /etc/sudoers.bak) es más conveniente, porque simplemente puede restaurarla con una sola línea.

Razones:

  1. no se requiere sudoers para autenticar a un usuario al iniciar sesión
  2. No se requiere sudoers para activar el usuario raíz con la Utilidad de directorio , solo una cuenta de administrador que funcione. La autenticación se realiza con los servicios OD locales.
  3. Si tiene una conexión a Internet que funciona o un modo de recuperación local que funciona (también conocido como partición de recuperación), siempre puede restaurar el archivo sudoers predeterminado desde un recurso en línea (por ejemplo, pastebin o github) o como se mencionó anteriormente: más conveniente desde un archivo de copia de seguridad local.
  4. Si tiene una segunda Mac y un cable adecuado, siempre puede iniciar la Mac "rota" en el modo de disco de destino y transferir un archivo sudoers que funcione bien desde la segunda Mac.

Probado en una máquina virtual Mojave por:

  1. simplemente eliminando el archivo sudoers por completo
  2. editando sudoers y nanocomentando la raíz y la línea %admin , cambiando la propiedad de sudoers a 501:staff y convirtiéndolo en 777

Prueba:

ingrese la descripción de la imagen aquí

y toda esta actividad para habilitar el inicio de sesión raíz se llevó a cabo después de que destruyera sus sudoers , ¿correcto? Probé el inicio de sesión del usuario raíz, pero, obviamente, sin arruinar mis propios Sudoers primero. Supongo que estoy pidiendo confirmación de que no necesito usar Directory Utility para configurar el inicio de sesión raíz por adelantado , puedo hacerlo después de estropear sudoers, ¿correcto? Sí, parece que dijiste exactamente eso, pero aún siendo cauteloso de no estar malinterpretando la secuencia de eventos en tu prueba.
@JLPeyret Exactamente, puede habilitar la raíz después de atornillar/eliminar su archivo sudoers, incluso después de reiniciar, apagar, etc. 1. ( rm sudoers) era un escenario 2. ( nano/chmod/chown sudoers) era otro escenario.
excelente. tú y @Gordon Davidson fueron geniales. lo obtienes para la captura de pantalla y, especialmente, la prueba. tx.

Con el debido respeto a las otras personas que han ofrecido sugerencias hasta ahora, están ofreciendo ideas mucho más complicadas de lo necesario.

Aquí está la simple verdad: desde al menos 10.11 en adelante, no hay necesidad de tocar su /etc/sudoersarchivo. Ninguno. Solo déjalo en paz.

Mire la parte inferior del /etc/sudoersarchivo y verá estas líneas:

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

Lo que eso significa es que puede colocar archivos /etc/sudoers.d/y sudoleerlos como si estuvieran en el sudoersarchivo principal sin tener que tocar el sudoersarchivo oficial.

(En algunas versiones de macOS, es posible que deba crear la carpeta a través de sudo mkdir /etc/sudoers.d/, pero en versiones recientes, ya existe).

Puede crear/editar el archivo de esta manera:

sudo visudo -f /etc/sudoers.d/foo

Cuando salga del editor, visudoverificará la sintaxis por usted, pero incluso si ignora las advertencias y lo guarda de todos modos, sudoignorará cualquier archivo /etc/sudoers.d/que no tenga la sintaxis correcta, pero su sudoersarchivo principal permanecerá intacto y funcionando.

Puede ejecutar sudo visudo -cpara verificar la sintaxis de cualquiera/todos sudoerslos archivos y mostrar que se están leyendo/incluyendo.

Los archivos /etc/sudoers.d/deben ser propiedad de root, deben serlo chmod 440y no deben tener ninguna extensión de archivo (es decir, "foo" está bien pero no "foo.txt"). Si crea el archivo usándolo, se le visudootorgarán automáticamente los permisos correctos.

(Ah, y no es necesario habilitarlo rooten una Mac. He usado uno desde 2003 y he hecho todo tipo de cosas raras, pero nunca lo he necesitado).


Si alguna vez logra arruinar su /etc/sudoersarchivo, puede usar BBEdit para editar el archivo. Le pedirá su contraseña de administrador, pero una vez ingresada, puede editar el archivo y eliminar la línea ofensiva. Pero aún así nunca debe editar el /etc/sudoersarchivo.

ya sabes, ahora que lo pienso, probablemente también exista la ventaja de que los futuros cambios entregados por Apple en /etc/sudoers no afectarán los ajustes relacionados con sudo.

macOS es un poco más seguro que la mayoría de los sistemas operativos unixish a este respecto, ya que tiene rutas de acceso a la raíz que no dependen de sudo. Si estropea /etc/sudoers, hay varias formas de recuperar (incluso sin preparación previa, además de hacer una copia de seguridad de /etc/sudoers):

  • Ejecute la Utilidad de Directorio (está oculta en /System/Library/CoreServices/Applications, pero Spotlight puede encontrarla). Haga clic en el candado y autentíquese, luego seleccione el menú Editar > Habilitar usuario raíz e ingrese una contraseña raíz. Cuando haya terminado con la raíz, puede desactivarlo de la misma manera.

  • Puede usar AppleScript do shell script ... with administrator privilegespara ejecutar comandos de shell como root. Abra /Aplicaciones/Utilidades/Editor de secuencias de comandos e ingrese algo como esto:

    do shell script "cp /etc/sudoers.bkp /etc/sudoers" with administrator privileges
    

    ... y presione el botón ejecutar (triángulo apuntando hacia la derecha) en la barra de herramientas. Autenticar cuando se le solicite.

Luego también está el método simple y universal: antes de jugar con /etc/sudoers, ejecute sudo -spara abrir un shell raíz y déjelo abierto para que pueda usarlo para recuperarse si es necesario. Obviamente, no sobrevivirá a un reinicio, pero puede realizar pruebas básicas en su nuevo /etc/sudoers antes de reiniciar.