configuración de sudoers de grano fino (argumentos de línea de comandos permitidos)


20

¿Hay alguna forma directa de permitir que un usuario ejecute (por ejemplo)

/usr/bin/pacman -S -u

como root, sin permitirle correr

/usr/bin/pacman -S -u some_package

?

La línea

user ALL=(root) NOPASSWD: /usr/bin/pacman -S -u

permite ambos, y

user ALL=(root) NOPASSWD: /usr/bin/pacman -S -u ""

parece ser semánticamente equivalente.

Respuestas:


27

Para su caso intente algo como esto:

Cmnd_Alias PACMAN = /usr/bin/pacman -S -u, ! /usr/bin/pacman -S -u some_package
user ALL=(root) NOPASSWD: PACMAN

Puede usar patrones glob de shell como [az], [0-9], * etc. en su archivo sudoers para excluir paquetes que coincidan con un patrón determinado.


3

Escribe un script que haga lo que quieras y dale acceso a sudo.

También asegúrese de que cualquier entorno en el que se ejecute no tenga acceso a la red en absoluto, o simplemente pueden usar sus propios dns para suplantar el espejo y luego ejecutar código arbitrario como raíz cuando pacman lo instale.


esa no es una forma elegante, sudo admite de forma predeterminada el caso exacto dado
matthias krull

1
No es la mejor solución, pero +1 para advertencia de seguridad
Aaron J Lang
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.