web-dev-qa-db-fra.com

Pourquoi la valeur de $ PATH est-elle différente pour un utilisateur root et normal?

pour un utilisateur normal, je reçois:

/ usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/jeux:/usr/local/jeux :/home/monty/google_appengine

qui est en fait le contenu de /etc/environment

Pour root je reçois:

/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

quelle est la raison derrière ceci et quel fichier contient cette ligne?

2
Ashwini Chaudhary

PATH est une variable d’environnement, elle est donc "par défaut" ou "réinitialisée" lorsque vous changez d’environnement. Voir man sudoers pour une explication:

 env_reset       If set, Sudo will reset the environment to only contain
                   the LOGNAME, Shell, USER, USERNAME and the Sudo_* vari-
                   ables.  Any variables in the caller's environment that
                   match the env_keep and env_check lists are then added.
                   The default contents of the env_keep and env_check
                   lists are displayed when Sudo is run by root with the
                   -V option.  If Sudo was compiled with the SECURE_PATH
                   option, its value will be used for the PATH environment
                   variable.  This flag is on by default.

/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

est le chemin de base sans modifications. Différents utilisateurs se verront ajouter différents annuaires pour plusieurs raisons.

Et le raisonnement devrait être le suivant: root ne devrait jamais avoir plus de répertoires dans son PATH que nécessaire. Ou l'inverse: si root a besoin d'un fichier, il devrait se trouver dans /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin. Vous ne jouez pas à des jeux en tant que root. Vous n'utilisez pas un gestionnaire de bureau en tant que root. Une racine est pour les tâches administratives.

Le wiki contient quelques informations supplémentaires (entre autres, quels fichiers sont utilisés pour ajouter à PATH): https://help.ubuntu.com/community/EnvironmentVariables

3
Rinzwind

Dans le cas d'un utilisateur normal, des fichiers tels que ~/.profile, ~/.bash_profile, ~/.bashrc pourraient être ajoutés à votre chemin par défaut (qui devrait être identique à celui que vous avez indiqué pour root.

Vous pouvez vérifier l’un de ces fichiers (ceux que je connais le plus souvent) pour des lignes telles que

export PATH=$PATH:/usr/games:/usr/local/games:/home/monty/google_appengine
ou
export PATH=/usr/lib/lightdm/lightdm:$PATH

Modifier

.bashrc et .profile semblent avoir des versions par défaut (/etc/profile/ et /etc/bash.basrhc) dans /etc/, vous pouvez les vérifier pour le chemin d'accès à la racine.

De plus, /root/ est l'équivalent de /home/<username> pour root. Je suppose que ce répertoire contient les fichiers ~/.profile, ~/.bash_profile, ~/.bashrc, ce qui aiderait également à contrôler le $ PATH de root.

1
Karthik T