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? p>
3 Réponses :
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
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.
Vous pouvez définir la variable dans / etc / environnement, puis utiliser "sudo -i" pour exécuter le script (fonctionne dans Ubuntu 10.10). p>
Ceci est la ligne dans le fichier sudoers qui réinitialise: p>
Vous pouvez contourner cela en ajoutant EDIT: MEDER, vous ne désactivez pas Env_Reset, vous définissez simplement la réinitialisation du chemin p>
ou vous pouvez supprimer l'incoloupant Même mieux cependant, vous pouvez déclarer un De cette façon, vous pouvez contrôler les répertoires spécifiques à inclure sur le chemin. P> par défaut env_Reset code> p>
chemin code> à
env uekeeks code> ou en ajoutant cette ligne: p>
par défaut env_ env_keekee = "chemin" code> p>
env_reset code> ligne. p>
Secure_Path code> qui remplacera le chemin
code> lorsque sudo est exécuté: p>
par défaut Secure_Path = "/ bin: / usr / bin" code> p>
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'