Otro beneficio de usar visudo -f
como se menciona en algunas respuestas es que hay una opción correspondiente -c
o --check
que verifica que no tiene información no válida en un archivo sudoers.d o cualquier otro archivo que desee poner en sudoers.d. Esto es REALMENTE útil en los casos mencionados con herramientas automatizadas, ya que puede ejecutar, por ejemplo
sudo visudo -c -q -f /home/myuser/mysudoers && \
sudo chmod 600 /home/myuser/mysudoers && \
sudo cp /home/myuser/mysudoers /etc/sudoers.d/mysudoers
Esto comprueba silenciosamente el archivo (sin salida debido a -q) y solo si eso NO devuelve un error (la salida 1 significa un archivo sudoers no válido), entonces copiará el archivo en sudoers.d, de esta manera puede crear el archivo y trabaje en él sin tener que corregirlo la primera vez (el uso sudo visudo -f /etc/sudoers.d/myfile
tiene que tener éxito o descarta el contenido si no lo arregla).
Además, una palabra de precaución con respecto a estas declaraciones de las otras respuestas.
Según mi experiencia, las reglas sobre los archivos en este directorio son más flexibles que para / etc / sudoers. Esto ha incluido:
Los errores en el archivo no hicieron que sudo fallara. Sin embargo, el archivo fue ignorado. Las reglas de permisos parecen menos estrictas. Permito que el grupo correspondiente lea el archivo. No creo que sea posible con / etc / sudo.
Los archivos en /etc/sudoers.d deben cumplir con la misma sintaxis que / etc / sudoers, porque debajo de las cubiertas el sistema simplemente concatena todos los archivos con el último en "ganador" si hay varias entradas para el mismo Entorno singular.
Si los permisos son horriblemente incorrectos (se pueden escribir en todo el mundo) en archivos en /etc/sudoers.d/, entonces se ignoran, esto puede ser la causa de que se pasen por alto los archivos no válidos, de lo contrario puede romper seriamente el sudo
comando al tener un sudoers no válido. d archivo con los permisos correctos.
Puede permitir que los archivos sudoers sean legibles en todo el mundo, si accidentalmente le permite a 'otro' el permiso de escritura que necesita sudo como otro usuario o desde un terminal raíz ejecute este comando. Esto también puede romperse si el archivo es propiedad de otra persona que no sea root: root.
sudo chmod 644 /etc/sudoers.d/mysudoers
sudo chown root:root /etc/sudoers.d/mysudoers
Acabo de confirmar que si ejecuto chmod o+w /etc/sudoers.d/vagrant
ya no puedo sudo como el usuario vagabundo, me pide mi contraseña y luego falla.
Cuando corrí sudo -l
para ver los permisos del comando aplicado como otro usuario de sudo válido, también recibí una advertencia sobre los permisos del archivo. Este es el mismo comando que utilicé para confirmar que el usuario 'vagabundo' perdió sudo cuando apliqué o+w
permisos al archivo que le daba permiso a ese usuario.