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.

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.


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.