Lorsque j'exécute sudo, qu'arrive-t-il exactement à mon environnement?
Quand je cours sudo command
, il ne semble pas voir mon environnement ou root. Par exemple, mon chemin d'accès aux deux inclut /usr/local/bin
, mais si j'essaie d'exécuter l'un des programmes sans le chemin d'accès complet, il échoue.
Je pensais que sudo s'exécutait en tant que root, et donc obtenu l'environnement de root. Existe-t-il une manière différente que bash s'exécute sous sudo que sous root ou mon utilisateur normal?
ÉDITER:
J'utilise sudo -i
ces derniers temps, mais récemment, cela a causé des problèmes car mon répertoire de travail actuel est réglé sur /root
. C'est comme prévu (sorta), mais je ne comprends toujours pas pourquoi sudo ne reconnaît pas mes exécutables /usr/local/bin
.
ÉDITER:
J'utilise Fedora 15.
la source
PATH
, et parfois il n'est pas facile de trouver qui le remplace en dernier. Il peut s'agir d'un paramètre système (par exemple dans PAM), sudo lui-même ou un script de profil ultérieur.Réponses:
Je ne connais pas les valeurs par défaut sur Fedora, mais sur Debian, par
sudo
défaut, l'utilisation de l'secure_path
option avec une valeur par défaut de/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
.Cela signifie que le chemin d'accès est modifié à cette valeur chaque fois que vous utilisez
sudo
; mais lorsque vous utilisezsudo -i
, le chemin est modifié par la suite par les fichiers RC de l'utilisateur root.la source
secure_path
option. La valeur par défaut ne figurait pas/usr/local/bin
sur mon installation. Merci, cela a vraiment aidé à clarifier les choses!Vous pouvez vérifier cela assez facilement avec des choses comme
Comparez la sortie de
Et des choses comme
De cette façon, vous pouvez essayer de découvrir ce qui manque dans votre configuration.
la source
/usr/local/bin
n'est pas dans mon env sudo, mais c'est dans mon env racine et env utilisateur. Pourquoi est-ce?root
, comme prévu. Qu'est-ce qui pourrait faire en sorte que mon env sudo soit différent de mon env racine?/usr/local/bin
au chemin root (j'ai dû le faire manuellement, malheureusement)?La
sudo -i
commande simule la connexion initiale. Sur mon système Debian, il indique également que:la source
Vous pouvez ajuster
sudo
leenv_keep
paramètre de pour inclurePATH
, mais vous devez garder à l'esprit les implications de sécurité de le faire.... lancera votre
$EDITOR
, puis vous pourrez apporter des modifications àDefaults env_keep =
... le cas échéant.Vous pouvez également ajouter / usr / local / bin au chemin d'accès du système en ajoutant des fichiers à
/etc/profile.d
.par exemple:
la source
sudo
a une gestion spéciale dePATH
donc vous ne devriez pas faire cela.