Quel PATH fait `sudo <command>` utiliser pour searchr `<command>`?

J'ai installé eclipse dans mon directory personnel et j'ai mis son path dans PATH dans ~/.profile .

Donc, ça marche

 $ eclipse 

Mais quand on l'appelle avec sudo , l' eclipse n'est pas trouvée:

 $ sudo eclipse sudo: eclipse: command not found 

Quel PATH sudo eclipse utiliser pour searchr eclipse ? Est-ce le PATH root l'user?

Merci.

sudo par défaut utilise un PATH minimal , pour le rendre utilisable par l'user root . Ce n'est pas nécessairement le même que le PATH vous obtiendriez en vous connectant en tant qu'user root , ou en faisant

 sudo su - 

Par exemple, dans les nouvelles versions de Red Hat, j'ai remarqué que le path omis /usr/local/bin .

La page de manuel résume cela dans une section intitulée Notes de security :

sudo essaie d'être sûr lors de l'exécution de commands externes.

Il existe deux manières distinctes de traiter les variables d'environnement. Par défaut, l'option env_reset sudoers est activée. Cela entraîne l'exécution des commands avec un environnement minimal contenant TERM , PATH , HOME , SHELL , LOGNAME , USER et USERNAME en plus des variables du process d'invocation autorisé par les options sudoers env_check et env_keep . Il existe effectivement une list blanche pour les variables d'environnement.

Pour en savoir plus:

  • sudoers – list des users pouvant exécuter

    secure_path
    Chemin d'access utilisé pour chaque command exécutée depuis sudo. Si vous ne faites pas confiance aux personnes qui exécutent sudo pour avoir une variable d'environnement PATH saine, vous voudrez peut-être l'utiliser. Une autre utilisation est si vous souhaitez que le "path racine" soit séparé du "path user". Les users du groupe spécifié par l'option exempt_group ne sont pas affectés par secure_path . Cette option n'est pas définie par défaut.

  • sudo – exécute une command en tant qu'autre user