configuration sudoers à grain fin (arguments de ligne de commande autorisés)

20

existe-t-il un moyen simple de permettre à un utilisateur de s'exécuter (par exemple)

/usr/bin/pacman -S -u

en tant que root, sans lui permettre de courir

/usr/bin/pacman -S -u some_package

?

La ligne

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

permet à la fois, et

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

semble être sémantiquement équivalent.

nisc
la source

Réponses:

27

Pour votre cas, essayez quelque chose comme ceci:

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

Vous pouvez utiliser des modèles de glob shell comme [az], [0-9], * etc. dans votre fichier sudoers pour exclure les packages qui correspondent à un certain modèle.

matthias krull
la source
3

Écrivez un script qui fait ce que vous voulez et donnez-lui accès à sudo.

Assurez-vous également que quel que soit l'environnement dans lequel il est exécuté, il n'a pas du tout accès au réseau, ou ils peuvent simplement utiliser leur propre DNS pour usurper le miroir, puis exécuter du code arbitraire en tant que root lorsqu'il est installé par pacman.

Daenyth
la source
ce n'est pas une manière élégante, sudo prend en charge par défaut le cas exact donné
matthias krull
1
Pas la meilleure solution, mais +1 pour l'avertissement de sécurité
Aaron J Lang