2009-10-04 8 views
6

Je veux ajouter un répertoire au $ PATH lors de l'exécution de sudo, ceci est une exigence (semi) permanente, pas quelque chose qui doit être ajouté aux scripts eux-mêmes . Je remarque que Django a réussi à le faire, (mon $ PATH lors de l'exécution de sudo est "/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/django/django-trunk/django/bin ") - alors comment ça s'est fait?

Répondre

6

Je pense que cela devrait fonctionner si vous enregistrer dans /root/.bashrc:

export PATH=/www/foo:$PATH 

J'oublie si c'est PATH ou PYTHONPATH et si elle compte en fait, cela est basé sur le .bashrc de mon utilisateur:

export PYTHONPATH=/www/django:$PYTHONPATH 
+0

Merci, meder, cela a fait l'affaire. –

+0

Pas de problème. Ne pas oublier de sélectionner une réponse pour que les autres puissent savoir qu'elle a été résolue :) –

+0

+1 pour avoir résolu le problème de l'OP. –

3

Vous pouvez définir la variable dans/etc/environnement, puis utilisez la commande "sudo -i" pour exécuter le script (travaux dans ubuntu 10.10).

17

Ceci est la ligne dans le fichier sudoers qui remet à zéro:

Defaults env_reset

Vous pouvez contourner ce problème en ajoutant PATH-env_keeps ou en ajoutant cette ligne:

Defaults env_keep = "PATH"

EDIT : meder, vous ne désactivez pas env_reset, vous contournez simplement la réinitialisation du chemin

Ou vous pouvez supprimer la ligne env_reset incriminée.

Mieux encore cependant, vous pouvez déclarer une secure_path qui remplacera PATH lorsque sudo est exécuté:

Defaults secure_path="/bin:/usr/bin"

De cette façon, vous pouvez contrôler les répertoires spécifiques à inclure dans le chemin.

+1

Ceci devrait être la réponse acceptée. Vous pouvez limiter l'accès aux seuls chemins nécessaires avec le mécanisme sudoer au lieu d'ouvrir tous les accès root. – Alkaline

+0

Accéder au fichier sudoers via 'sudo visudo' – fiat

Questions connexes