Los cambios realizados en los archivos /etc/sudoers.d
permanecen en su lugar si actualiza el sistema. Esto puede evitar bloqueos del usuario cuando se actualiza el sistema. A Ubuntu le gusta este comportamiento. Otras distribuciones también están utilizando este diseño.
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 causaron
sudo
fallas. Sin embargo, el archivo fue ignorado.
- Las reglas de permisos parecen menos estrictas. Permite que el grupo correspondiente u otro lea el archivo. No creo que eso fuera posible con
/etc/sudoers
. Los permisos de escritura deben restringirse root
para mantener la seguridad. La versión actual de Ubuntu de sudo permite permisos de lectura para grupos u otros. (Esta capacidad permite auditar el acceso a sudo sin necesidad de acceso de root)
El visudo
comando solo está predeterminado /etc/sudoers
. Editará y verificará cualquier archivo que especifique con la -f
opción. Utilizo esta capacidad para editar archivos que se instalarán automáticamente como /etc/sudoers
o en /etc/sudoders.d
. Sin embargo, es posible que no se encuentren definiciones de otros archivos. Es mejor hacer que el archivo sea independiente.
La capacidad de tener archivos independientes hace que sea simple para una aplicación habilitar la sudo
capacidad de instalación y eliminarlos cuando no está instalada. Las herramientas de configuración automatizadas también pueden usar esta capacidad.
He utilizado esta capacidad para aislar los cambios necesarios para otorgar acceso a grupos de usuarios específicos en sistemas específicos.
sudo
fallas'. Rompí sudo en RHEL con una sintaxis incorrecta en un archivo de /etc/sudoers.d. Esto requirió un esfuerzo significativo para rectificar y creo que la recomendación debería ser usar siemprevisudo -f
para editar esos archivos.Sí, puedes usar
visudo
para editar esos archivos. Todo lo que tiene que hacer es especificar el nombre del archivo que desea editar con la-f
opción. Por ejemplo:O, si es necesario:
Documentación
De
man visudo
:En resumen:
Sintaxis: Ambos
visudo
yvisudo -f
realizan la misma verificación de sintaxis .Permisos / Propiedad: Como una característica agregada para ayudar a la administración de sistemas grandes , los archivos editados bajo
visudo -f
no se verifican por propiedad o permisos: esto permite la verificación de sintaxis de un archivo fuera de línea o como parte de un sistema de control de revisión.Por que usar
/etc/sudoers.d/
Normalmente
/etc/sudoers
está bajo el control del administrador de paquetes de su distribución. Si ha realizado cambios en ese archivo y el administrador de paquetes desea actualizarlo, deberá inspeccionar manualmente los cambios y aprobar cómo se combinan en la nueva versión. Al colocar sus cambios locales en un archivo en el/etc/sudoers.d/
directorio, evita este paso manual y las actualizaciones pueden continuar automáticamente.¿Cuándo
sudo
ignora un archivo/etc/sudoers
?Si su
/etc/sudoers
archivo contiene la línea:luego
sudo
leerá los archivos en el directorio/etc/sudoers.d
.Las excepciones son:
~
.
caracterEsto se hace (a) para la comodidad de los administradores de paquetes y también (b) para que los archivos de respaldo de los editores sean ignorados.
fuente
visudo -f
seguro?visudo -f
edita de manera segura como de costumbrevisudo
. Es por eso que tenemosvisudo
y por qué ofrece la-f
opción.-f
ya que esto podría omitir a alguien que luego lo copia en /etc/sudoers.d/ sin verificarlos dos veces./etc/sudoers.d/mysudorules.sudo
y no pude entender por qué las reglas dentro no se aplicaron antes de leer su respuesta./sudoers.d/mysite.co.uk
no funcionaba y después de cambiarle el nombre amysite
él funciona! :)Porque es más fácil para las herramientas automatizadas (como Chef o Puppet) colocar archivos individuales en este directorio, en lugar de realizar cambios en ellos
/etc/sudoers
, que pueden ser frágiles.Los archivos en
/etc/sudoers.d
son (en efecto) concatenados. Verá varias otras instancias de este patrón en/etc
, como/etc/cron.d
y/etc/logrotate.d
.fuente
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 ejemploEsto 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.
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.
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.fuente
Solo un pequeño complemento a cualquier respuesta general ... ninguna de las otras respuestas solucionó mi problema, que era ese orden importante.
Si sus líneas funcionan en sudoers pero no en sudoers.d, intente mover el #include o cambie el orden de sus archivos sudoers.d (con el prefijo de un número). Parece que lo más específico debería ser el primero en el archivo.
Tenía algo como:
Y el segundo no tuvo efecto porque el primero ya coincidía. NOPASSWD no es una condición, sino una forma de modificar la acción.
Y no era obvio porque no estaba en un solo archivo, debido al directorio sudoers.d.
fuente