¿Por qué necesitamos usar visudo en lugar de modificar directamente el archivo sudoers?

84

Entiendo que si desea modificar quién puede usar sudoy qué pueden hacer con él, debe usarlo visudo. Sé que no debo modificar directamente el archivo / etc / sudoers.

¿Qué es lo que visudohace que modificar directamente el archivo no lo haga? ¿Qué puede ir mal?

Razón
fuente

Respuestas:

104

visudocomprueba la sintaxis del archivo antes de sobrescribir el sudoersarchivo.

Si usa un editor simple, estropee la sintaxis y guarde ... sudo(probablemente) dejará de funcionar y, dado /etc/sudoersque solo es modificable root, está atascado (a menos que tenga otra forma de obtener root).

Además, asegura que las ediciones serán una operación atómica. Este bloqueo es importante si necesita asegurarse de que nadie más pueda estropear sus cambios de configuración cuidadosamente considerados. Para editar otros archivos como root además, /etc/sudoersexiste el sudoeditcomando que también protege contra tales conflictos de edición.

Estera
fuente
3
Wow, nunca supe sobre sudoedit. No funciona en OS X, ¿así que supongo que es una herramienta GNU? De todos modos, información genial aquí. Siempre edité manualmente y nunca tuve un problema; ahora entiendo que fue solo suerte y que la herramienta puede ayudar a prevenir una catástrofe. ¡Gracias!
Harv
2
@Harv. No hay GNU sudoy OS X tiene herramientas GNU. Como sudo se creó por primera vez como una aplicación de código abierto, probablemente no haya razón para que sean muchas implementaciones. sudoy sudoeditson el mismo comando, sudose comporta como sudo -ecuando se le llama como sudoedit. Creo que es solo que OS X olvidó agregar el sudoedit -> sudoenlace, pero aún debería poder usar sudo -eo llamar sudocon argv [0] configurado sudoeditpara obtener el mismo comportamiento.
Stéphane Chazelas
Curiosamente, visudoutiliza nano por defecto.
Tim
3
@Tim: El valor predeterminado "real" es vi, pero se puede configurar para usar otra cosa. Entonces, nano podría ser el valor predeterminado en su distribución / configuración. Ver la página del manual .
Mat
2
@ AngularInDepth.com, las consecuencias son bastante obvias. Si guarda un archivo sudoers no válido, el sistema no podrá analizarlo. Por lo tanto, si hago un sudo vim /etc/sudoerserror en la sintaxis, no podré sudo vim /etc/sudoersvolver a solucionarlo. Efectivamente, se perderá toda la capacidad de elevar los privilegios a través de sudo, ya que el sistema no podrá analizar el archivo.
Spencer D
23

Desde la página de visudo man:

visudo bloquea el archivo sudoers contra múltiples ediciones simultáneas, proporciona comprobaciones básicas de sanidad y busca errores de análisis. Si el archivo sudoers se está editando actualmente, recibirá un mensaje para intentarlo más tarde.

También verifique esta respuesta desde serverfault .

amyassin
fuente