Necesito editar /etc/sudoers
desde un script para agregar / eliminar cosas de las listas blancas.
Suponiendo que tengo un comando que funcionaría en un archivo normal, ¿cómo podría aplicarlo /etc/sudoers
?
¿Puedo copiarlo y modificarlo, luego visudo
reemplazar el original con la copia modificada? ¿Proporcionando mi propio guión en $EDITOR
?
¿O puedo usar las mismas cerraduras y cp
?
La pregunta se trata más de problemas potenciales que de simplemente encontrar algo que funcione.
echo "$USER ALL=NOPASSWD:/usr/bin/rsync" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/rsync')
.echo "$CONFIGLINE" | (EDITOR="tee -a" visudo)
-a
bandera aEDITOR="tee"
: agregará una línea al archivo, no solo sobrescribirá la primera línea. No capté la diferencia al principio y no pude encontrar la manera de agregar. Espero poder encontrar algunas personas en algún momento señalando eso directamente ;-)Utilice visudo para esto con un editor personalizado. Esto resuelve todas las condiciones de carrera y los problemas de "pirateo" con la solución de Brian.
Este script agregará la línea "# Cambio ficticio a sudoers" al final de sudoers. Sin hacks y sin condiciones de carrera.
Versión anotada que explica cómo funciona realmente:
fuente
--enable-env-editor
; de lo contrario, solo usará respetar la variable del editor si pertenece a un pequeño conjunto de valores conocidos.sudo -E
del primer comando.Debe realizar sus ediciones en un archivo temporal, luego usar visudo -c -f sudoers.temp para confirmar que los cambios son válidos y luego copiarlo en la parte superior de / etc / sudoers
fuente
En Debian y sus derivados, puede insertar un script personalizado en el
/etc/sudoers.d/
directorio, con derechos0440
; para obtener más información, consulte /etc/sudoers.d/README .Podría ayudar.
fuente
Se supone que visudo es la interfaz humana para la edición
/etc/sudoers
. Puede lograr lo mismo reemplazando el archivo directamente, pero debe tener cuidado con la edición simultánea y la validación de sintaxis. Cuidado con losr--r-----
permisos.fuente
Si
sudo
permite agregar entradas/etc/sudoers.d
, puede usar esta respuesta de @ dragon788:https://superuser.com/a/1027257/26022
Básicamente, usas
visudo
para verificar el archivo antes de copiarlo/etc/sudoers.d
, para que puedas estar seguro de que no estás rompiendosudo
para nadie.Esto y el éxito devuelve (0) si es válida, por lo que se puede utilizar con los cheques
if
,&&
y otras operaciones de escritura de Boole. Una vez que lo haya validado, simplemente cópielo/etc/sudoers.d
y debería funcionar. Asegúrese de que sea propiedad de root y no pueda ser escrito por otros.fuente
Configure un editor personalizado. Básicamente será un script que acepta el nombre del archivo (en este caso /etc/sudoers.tmp), lo modifica y lo guarda en su lugar. Así que podría escribir en ese archivo. Cuando haya terminado, salga del script y visudo se encargará de modificar el archivo sudoers real por usted.
fuente
#!/bin/sh; echo "# my changes to sudoers" >> $1; exit 0
Parece funcionar para mí.Muchas respuestas, he estado trabajando con sudo para yonks pero no tuve la necesidad de automatizar la configuración de instalación hasta ahora. Usé una combinación de algunas de las respuestas anteriores, escribiendo mi línea de configuración en la ubicación de inclusión /etc/sudoers.d para no tener que modificar el archivo principal de sudoers, luego verifiqué ese archivo para ver la sintaxis, ejemplo simple a continuación:
Escriba su línea en un archivo de inclusión de sudoers:
Compruebe que el archivo de inclusión de sudoers haya pasado las comprobaciones de sintaxis visual:
fuente
Solo para agregar una opción adicional a las respuestas anteriores, si la condición de carrera no es una preocupación importante, entonces se puede usar el siguiente comando para evitar copiar manualmente un archivo modificado a
/etc/sudoers
Esto asegurará que el nuevo archivo esté validado e instalado correctamente con la actualización de permisos.
Tenga en cuenta que si hay un error en el
/tmp/sudoers.new
archivo, sevisudo
le solicitará al usuario que ingrese, por lo que es recomendable verificarlovisudo -c -f /tmp/sudoers.new
primero.fuente
Creo que la solución más sencilla es:
Crea un script addudoers.sh
y llámelo con los usuarios que desea agregar como:
Para obtener una explicación completa, consulte esta respuesta: Agregar usuarios a sudoers a través del script de shell
¡Saludos!
fuente
Intenta repetirlo. Sin embargo, debe ejecutarlo en una subcapa. Ejemplo:
sudo sh -c "echo \"group ALL=(user) NOPASSWD: ALL\" >> /etc/sudoers"
fuente
Esto funcionó para mí basado en lo que otros publicaron aquí. Cuando usaba el script de otras personas, me abría visudo, pero no hacía la edición. Esto hizo la edición que necesitaba para permitir a todos los usuarios, incluidos los usuarios estándar, instalar java 7u17 para safari / firefox.
Esto agregó el% todos bla, bla, bla al final del archivo sudoers. Tuve que ejecutar el script así.
Buena suerte: D
fuente