Comme exemple à ma question, mon ~/.bashrc
fichier contient ces lignes:
export LD_LIBRARY_PATH=/opt/intel/mkl/lib/ia32:$LD_LIBRARY_PATH
export LD_PRELOAD=/opt/intel/mkl/lib/ia32/libmkl_core.so
de sorte que Numpy (Python) puisse trouver les bibliothèques qu’il doit exécuter, car il est construit avec les compilateurs MKL et Intel. Ce flux de travail n'est pas le meilleur, mais c'est une autre histoire.
Ma question est de savoir comment puis-je passer des variables arbitraires (comme celles dans ~/.bashrc
) lorsque je lance un programme avec 'sudo' (mais pas root)?
Actuellement, si je cours:
sudo python -c "import numpy"
Je reçois une erreur:
ImportError: libimf.so: cannot open shared object file: No such file or directory*
Certaines suggestions comme sudo -i
ou sudo -E
ne change rien ici.
Modifier:
Je ne peux pas répondre à ma question (pas assez de points: D) mais je vais commenter ici, dans l’espoir que d’autres débutants en Linux s’interrogent sur les sudo
pièges.
[Seulement temporairement!] Cela fonctionne pour moi ( ~/.bashrc
):
alias sudo='sudo env PATH=$PATH VAR1=SOME_VALUE VAR2=SOME_VALUE...'
L'
-E
option que vous mentionnez semble bien fonctionner:la source
sudo python -c "import numpy"
avecLD_LIBRARY_PATH
etLD_PRELOAD
défini comme écrit ci-dessus?SECURITY NOTES
desudo
la page de manuel.man sudo
ne soit pas clair, et lorsque l’utilisateur essaie de suivre les références pointées là, il est très facile de se décourager par toutes les branches qu’il faut suivre, pour pouvoir décrypter sens.Vous pouvez utiliser l'
-E
option sudo pour préserver l'environnement actuel (si vous avez le droit de le faire)la source
Vous devez éditer votre
sudoers
parsudo visudo
car vous avez éventuellement un plug-in de politique de sécurité activé qui remplace votre optionPATH
parsecure_path
. Donc, ajoutez le chemin à la liste et vous pouvez également utiliser à laenv_keep
place, par exemple:Pour vérifier si votre
PATH
est remplacé, exécutez la commande suivante:Voir aussi: Pourquoi les variables PATH sont-elles différentes lors de l'exécution avec sudo et su? chez Unix SE
la source
env_keep
ne fonctionne pas sur PATH (dans le sens qu'ilsudo
utilise toujourssecure_path
pour rechercher la commande)Cela fonctionne pour moi (
~/.bashrc
):Source: Selon le montage OP
la source
sudo
moins sûre