Con sysvinit
una sudoers
entrada como esta sería suficiente:
%webteam cms051=/sbin/service httpd *
Esto permitiría comandos como:
sudo service httpd status
sudo service httpd restart
Ahora, con systemd
, el nombre del servicio es el argumento final. Es decir, el reinicio del servicio se haría con:
systemctl restart httpd.service
Naturalmente, pensé que definir el comando systemctl * httpd.service
funcionaría, pero eso permitiría algo como lo systemctl restart puppet.service httpd.service
que no es el efecto deseado.
Teniendo esto en cuenta, ¿cuál sería la mejor manera de permitir que los usuarios no root controlen un system.d
servicio? Esto no necesita ser sudoers
; tal vez un cambio de permiso de archivo puede ser suficiente?
sudo
configuración en mucho tiempo, pero ¿no podrías hacer algo asícms051=systemctl * httpd.service
?Respuestas:
Simplemente agregue todos los comandos necesarios por
sudoers
separado:fuente
cms051
?*
patrones similares o similares.La respuesta de @ jofel fue exactamente lo que necesitaba para obtener una configuración funcional. Enfrentando esto para cualquier otra persona que tropiece con esta pregunta. Necesitaba una forma de
capistrano
reiniciar mi aplicación Ruby después de implementarla desde mi máquina local. Eso significa que necesitaba acceso sin contraseña para reiniciar lossystemd
servicios. ¡ESTO es lo que tengo y funciona maravillosamente!Nota : mi usuario y grupo se llama
deployer
Poner código en un archivo personalizado aquí:
/etc/sudoers.d/deployer
Código:
fuente
deployer
en el caso, debe ejecutar elsystemctl
comando con sudo.Cree un alias de comando con los comandos a los que desea que tengan acceso. Luego asigne el grupo a ese alias de comando:
También es una buena práctica colocar cualquier edición en su /etc/sudoers.d/filename en lugar de editar directamente el archivo sudoers. Asegúrate de apuntar a tu .d / filename en los sudoers, lo que la mayoría de las nuevas distribuciones hacen de todos modos. Colocar estas 2 líneas en sus sudoers debería hacer el truco:
Nota: Ese # en frente del incluidoir no es un comentario. Debe permanecer.
fuente
Es más seguro detallarlos como sugiere jofel .
Si quisiera permitir que alguien use un subconjunto limitado de las habilidades de un comando, no confiaría en los comodines en una línea de sudoers para hacerlo. Incluso si el lenguaje fuera más expresivo que los globos de concha, hay demasiados casos de esquina para rastrear.
La
service httpd *
línea " " es relativamente segura porque (verifique esto :)service
solo tiene un indicador útil (--status-all
) que no hace nada particularmente sensible, y (verifique esto también :)/etc/init.d/httpd
solo aceptará las líneas de comando que desea permitir.Si hay tantas combinaciones que enumerarlas se vuelve incómodo, probablemente deberías preguntarte qué estás haciendo. Pero podría darles acceso a un script auxiliar cuidadosamente escrito que ejecuta el comando para ellos (al igual que
/etc/init.d/http
). Incluso en este caso, debe ser lo más preciso y explícito posible para enumerar exactamente qué comandos y opciones están permitidos, y no pasar ninguna entrada del usuario directamente al comando de destino.fuente