Las diferentes aplicaciones tienen una comprensión diferente de lo que significa el asterisco. Los shells tienden a tratarlo para la expansión de parámetros, que puede ser bastante compleja en la implementación y, a menudo, ocasiona problemas de seguridad cuando se utilizan en scripts. Sudo, por otro lado, lo trata simplemente como un comodín para todos los parámetros adicionales en ese único comando. En otras palabras, permite que el comando de servicio se ejecute con cualquier argumento que coincida con la siguiente expresión regular:
^ apache2 .*
Si lo agrega a su sudoers(5)
, se garantizará que podrá ejecutar cualquier argumento en el script de inicio apache2 como root. Si esto es seguro o no depende de cómo funciona el servicio. No hay nada intrínsecamente peligroso en el uso de un asterisco, pero algunos comandos le permitirán ejecutar otros comandos como argumentos. Por ejemplo, permitir tar(1)
con cualquier argumento podría resultar en la ejecución de comandos arbitrarios en la forma de tar --use-compression-program=./evil.sh
. No tengo conocimiento de ninguna forma de ejecutar comandos arbitrarios, pero eso no significa que no haya ninguno o que no lo habrá en el futuro.
En general, se supone que una persona que puede ejecutar un comando que administra servicios ya se encuentra en una posición privilegiada, por lo que se pondrá poca atención en garantizar que el servicio de inicio apache2 o los comandos de administración de servicios no puedan ser objeto de abuso. cuando se ejecuta como root.
Si considera que esto "explota el programa con una entrada falsa" y, por lo tanto, está fuera de alcance, es seguro. La entrada de sudoers no le permitirá, por ejemplo, ejecutar service apache2; ./evil.sh
como root .