7
votes

Comment changer en permanence la variable de chemin de Sudo $ (Ubuntu 9.x)

Je veux ajouter un répertoire à la piste $ lors de l'exécution sudo, il s'agit d'une exigence permanente (semi), et non de quelque chose à ajouter aux scripts eux-mêmes. Je remarque que Django a réussi à le faire (My $ Path lors de l'exécution sudo est "/ USR / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / sbin: / sbin: / bin: usr / x11r6 / bin: / django / django-coffre / django / bin ") - Alors, comment ça a fait ça?


0 commentaires

3 Réponses :


7
votes

Je pense que cela devrait fonctionner si vous le sauve si vous le sauvegardez dans /root/.bashrc:

export PYTHONPATH=/www/django:$PYTHONPATH

J'oublie si c'est un chemin ou PythonPath et si cela importe réellement, ceci est basé sur mon utilisateur .BASHRC: P>

export PATH=/www/foo:$PATH


4 commentaires

Aucun problème. N'oubliez pas de sélectionner une réponse afin que les autres puissent savoir qu'il a été résolu :)


Cela ne fonctionne pas pour moi. J'ai ajouté le chemin d'accès à /root/.bashrc, puis a ran "sudo env | grep chemin" et le chemin ajouté n'était pas présent. Cela fonctionne peut-être pour PythonPath, mais pas pour le chemin.


Cela n'a pas fonctionné pour moi aussi. J'ai posé une nouvelle question à Stackoverflow.com/Questtions/2717043/...


C'est une mauvaise solution. Le fichier / etc / sudoers existe pour vous permettre de changer le comportement de sudo. Ouverture du chemin de racine par défaut sur un dossier qui ne doit pas potentiellement pas être dans le chemin racine est une idée horrible. De plus, c'est un chemin, pas PythonPath qui contrôle où Bash recherche des exécutables.



3
votes

Vous pouvez définir la variable dans / etc / environnement, puis utiliser "sudo -i" pour exécuter le script (fonctionne dans Ubuntu 10.10).


0 commentaires

17
votes

Ceci est la ligne dans le fichier sudoers qui réinitialise:

par défaut env_Reset

Vous pouvez contourner cela en ajoutant chemin à env uekeeks ou en ajoutant cette ligne:

par défaut env_ env_keekee = "chemin"

EDIT: MEDER, vous ne désactivez pas Env_Reset, vous définissez simplement la réinitialisation du chemin

ou vous pouvez supprimer l'incoloupant env_reset ligne.

Même mieux cependant, vous pouvez déclarer un Secure_Path qui remplacera le chemin lorsque sudo est exécuté:

par défaut Secure_Path = "/ bin: / usr / bin"

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


2 commentaires

Cela devrait être la réponse acceptée. Vous pouvez limiter l'accès à des chemins nécessaires au mécanisme sudoer au lieu d'ouvrir tout l'accès de la racine.


Accédez au fichier sudoers via 'sudo visudo'