Utilisation de sudo 1.7.4p4 sous Solaris 5.10 et de sudo 1.6.7p5 sous RHEL4 u6 Je ne vois pas comment préserver mes variables d'environnement, par exemple $ PYTHONPATH. J'ai ajouté cette ligne à sudoers, mais cela ne fait aucune différence:
Defaults !env_reset
Est-ce que je fais quelque chose de mal ou l'installation sudo ne respecte-t-elle tout simplement pas le drapeau env_reset?
Edit: au moins sur Solaris, nous avons constaté que ce problème dépendait du shell! Le shell root standard est Bourne, mais si nous exécutons bash sous sudo ( sudo bash
),! Env_preset préservera l'environnement (y compris PATH et LD_LIBRARY_PATH). C'est un comportement plutôt déroutant, je dois le dire.
Réponses:
Utilisez avec précaution, il y a des problèmes de sécurité avec sudo et les variables.
De
man sudoers
j'ai trouvé que vous devriez utiliserDans Ubuntu,
sudo
conserve certaines variables.sudo -i
est plus comme se connecter en tant que root et ensuite exécuter la commande. Les deux peuvent être gênants, le premier poursudo nano myfile
laisser des fichiers appartenant à la racine à l'intérieur de votre maison et le second poursudo -i nano myfile
essayer d'ouvrir / root / monfichier.Courir
et voir ce que ça donne. Ici ça donne
par exemple. Maintenant, lancez
sudo visudo
et ajoutez la ligneen remplaçant par ce que vous avez trouvé juste avant. Ajoutez-y un nouveau chemin si vous en avez besoin.
A propos des bibliothèques:
Les distributions Linux prennent beaucoup de soin
PATH
, et vous devriez vraiment faire attention avant de jouer avec. Faites particulièrement attention en ajoutant des chemins comme ".
" ou/home/username
, cela n’est pas sécurisé.L'un des dangers de l'ajout de chemins d'accès réside dans le fait que des fichiers se trouvant sur ces chemins
root
peuvent être exécutés , ouvrant ainsi une fenêtre dans le système de sécurité pouvant être exploitée par des logiciels malveillants. Il peut y avoir d'autres dangers. Assurez-vous simplement de savoir ce que vous faites. Ignorersudo
les mesures de sécurité peut rendre votre Solaris aussi sûr que Windows XP.la source
sudo
écrivains ont fait attention à vous empêcher de le faire. Vous ne voulez pas que des bibliothèques malveillantes soient chargées car elles ont été trouvées dans le chemin utilisé par sudo. Donc, c'est pourquoi il est réinitialisé. Si vous codez des éléments destinés à être exécutés par root, copiez-les dans le répertoire système approprié.Il
sudoers
faut jouer avec beaucoup de prudence, comme d’autres l’ont dit.Une approche plus simple pour les cas plus simples lorsque vous souhaitez préserver des variables d'environnement particulières consiste à simplement transmettre la variable d'environnement souhaitée directement à l'aide de sudo (comme indiqué
[VAR=value]
dans l'aide de la commande sudo cmdline).Voir ce petit exemple où je l'ai également démontré pour plus d'une variable.
Pour l'
PYTHONPATH
exemple original dans la question, utilisez simplement ce qui suit:Créer un alias pour ce genre de chose est pratique. Ainsi:
la source
Votre
Defaults !env_reset
apparence est correcte, à condition que vous n'appeliez pas également sudo avec l'-E
option.Vous pouvez essayer de supprimer complètement cette entrée.
Avez-vous vérifié que vous éditez le bon fichier sudoers? Je suppose que cela pourrait être
/etc/sudoers
ou en/usr/local/etc/sudoers
fonction de la façon dont il a été installé. Avez-vous édité en utilisantvisudo
?Comment ça va sudo?
sudo python
,sudo su
,sudo su -
,sudo -s
, Autre chose? Seulementsudo python
etsudo su
préserverait votre environnement.Que
env | grep PYTHONPATH
dit-on? S'il n'y a rien, assurez-vous que PYTHONPATH est exporté en exécutantexport PYTHONPATH
et essayez à nouveau.Que
sudo env | grep PYTHONPATH
dit-on? S'il imprime la valeur attendue, quelque chose d'autre remplace votre valeur PYTHONPATH. Peut-être que root .bashrc ou .bash_profile ou les fichiers de configuration du système.la source
editor
oupassprompt
pour voir si vous avez le bon fichier. Ou utilisez strace, dtrace, botte ou similaire et voyez quels fichiers il ouvre.Selon la documentation Ubuntu pour LD_LIBRARY_PATH :
Ensuite:
Ajoutez un
ld.so
fichier de configuration/etc/ld.so.conf.d/
avec le chemin de votreLD_LIBRARY_PATH
Mettez à jour le cache avec:
la source