53 votes

Comment définir des variables d'environnement persistantes pour l'utilisateur root ?

Pour créer des variables d'environnement persistantes, j'ajoute le fichier script au répertoire /etc/profile.d, par exemple :

\# my script
export MY\_VAR=var\_value

Cela fonctionne correctement pour l'utilisateur actuel :

alex@alex-64:~$ echo $MY\_VAR
var\_value

J'ai maintenant besoin des mêmes variables d'environnement pour l'utilisateur root, mais /etc/profile.d script ne fonctionne pas pour root :

alex@alex-64:~$ echo $MY\_VAR
var\_value
alex@alex-64:~$ sudo su
root@alex-64:/home/alex# echo $MY\_VAR

root@alex-64:/home/alex# 

Comment puis-je définir les mêmes variables pour la racine ?

60voto

ish Points 134738

sudo ne préserve normalement pas les variables d'environnement locales. Vous devez l'utiliser avec l'option -E pour le faire, c'est-à-dire sudo -E su préservera $MYVAR pour la racine.

Par ailleurs, pour créer des variables persistantes qui s'appliquent véritablement à l'ensemble du système, il convient de les définir dans la rubrique /etc/environment .

10voto

diyism Points 241

Defaults env_reset en /etc/sudoers réinitialisera le PATH définie par /etc/environment .

Vous pourriez le modifier comme suit Defaults !env_reset pour désactiver la réinitialisation ou l'ajout :

Defaults secure_path="my/custom/path:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin

10voto

ppppplv Points 221

Tout comme vous définissez votre propre variable d'environnement, par exemple en éditant "~/.bashrc", vous pouvez définir la variable d'environnement de root en éditant "/root/.bashrc".

2voto

Emmanuel N K Points 441

Vous pouvez transmettre des variables d'environnement en utilisant env drapeau. J'ai toujours besoin de contourner les proxies et c'est un problème constant pour moi. Particulièrement lorsque vous avez besoin de passer PATH et les variables d'environnement proxy.

Commandement :

sudo env "ENV=$ENV1" "ENV2=$ENV2" [command]

Et vous pouvez l'ajouter en tant qu'alias (ajoutez ceci .bashrc , .bash_aliases o .zshrc etc.)

Exemple de mon alias :

alias psudo='sudo env "PATH=$PATH" "HTTP_PROXY=$HTTP_PROXY" "HTTPS_PROXY=$HTTPS_PROXY" "http_proxy=$http_proxy" "https_proxy=$http_proxy"'

Attention, cela réduit évidemment la sécurité de sudo.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X