Comment ajouter par programme secure_path dans le fichier sudoers


11

J'essaie de créer un script de données utilisateur pour une instance EC2 qui construit le nœud et npm à partir de github, puis démarre un service. Pour graisser ces roues, je dois ajouter:

:/usr/local/bin

à la fin de la ligne dans / etc / sudoers qui commence:

Defaults        secure_path="

/superuser/927512/how-to-set-path-for-sudo-commands parle de l'utilisation de visudo pour y parvenir, mais je veux le faire par programme dans les données utilisateur EC2.

/programming/16282789/adding-sudo-permissions-to-sudoers-for-user-via-shell-script parle de la modification du fichier sudoers, mais il semble terriblement trop cuit pour ce que j'essaie atteindre.

J'ai pensé qu'il serait facile de repérer la ligne et de la remplacer, mais je suis perplexe. Non seulement à cause de cette virgule inversée de fermeture ennuyeuse!

Réponses:


6

Si vous pouvez vivre en remplaçant la secure_pathvaleur au lieu de l'ajouter, vous pouvez utiliser une solution beaucoup plus simple. Généralement, sudo a un répertoire de configuration comme celui /etc/sudoers.doù vous pouvez déposer des fichiers de configuration supplémentaires.

Créez simplement un fichier avec votre secure_pathvaleur complète :

Defaults secure_path="<default value>:/usr/local/bin"

Cela écrase la valeur de la configuration principale. Si la valeur du chemin est la même pour toutes vos machines, cela peut facilement être déployé avec des scripts ou un package.

Cela présente l'avantage supplémentaire que vous n'avez pas à vérifier et éventuellement à fusionner les fichiers de configuration lorsque le package sudo est mis à jour à l'avenir.


2

en supposant que vous connaissez la ligne avec secure_path existe, une simple commande sed pour ce faire

sed -i -e '/secure_path/ s[=.*[&:/usr/local/bin[' /etc/sudoers

ou un peu plus sophistiqué (plus de vérification de syntaxe en entrée):

sed -i -r -e '/^\s*Defaults\s+secure_path/ s[=(.*)[=\1:/usr/local/bin[' /etc/sudoers
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.