L'installation d'outils et d'autres outils en ligne de commande dans Ubuntu 18.04 avec Sudo fonctionne parfaitement. exemple: Sudo apt install ...
fonctionne parfaitement. L'exécution d'outils et de programmes via la ligne de commande sous Sudo ne fonctionne pas du tout. L'exécution des mêmes programmes et outils qu'un utilisateur normal fonctionne parfaitement. Exemple: start gtkwave
comme un utilisateur normal fait apparaître l'interface graphique de gtkwave. Démarrez gtkwave en tant que Sudo, demande le mot de passe, puis se termine par: Sudo: gtkwave: command not found
.
Je dois dire que certains outils appelés sur la ligne de commande en tant que Sudo fonctionnent parfaitement, par exemple, je peux démarrer Atom à partir de la ligne de commande en tant qu'utilisateur normal et en tant que Sudo.
C’est peut-être parce que les outils/programmes ne fonctionnant pas sous Sudo ne sont pas installés dans les dossiers Linux communs tels que /bin
ou /usr/bin
, mais en tant que programmes sous /opt
(ils sont ajoutés au chemin ensemble des environnements nécessaires)?
Quelqu'un a-t-il une idée de pourquoi cela se produit?
Par défaut, Sudo
recherche les programmes en utilisant son propre secure_path
défini dans le fichier /etc/sudoers
. De man sudoers
:
secure_path Path used for every command run from Sudo. If you don't trust the people running Sudo to have a sane PATH environ‐ ment variable you may want to use this. Another use is if you want to have the “root path” be separate from the “user path”. Users in the group specified by the exempt_group option are not affected by secure_path. This option is not set by default.
Notez que, malgré la dernière ligne, Ubuntu /etc/sudoers
par défaut le configure :
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
ainsi, ni PATH
de l'utilisateur appelant, ni PATH
de la racine ne détermineront si les programmes sont localisés lors de l'utilisation de Sudo
.
Si vous voulez vraiment que les programmes situés dans des emplacements tels que /opt
soient exécutables via Sudo
, vous devrez soit:
utilisez le chemin complet, par exemple Sudo /opt/somepath/bin/prog
modifiez le sudoers secure_path
pour inclure les emplacements - si vous décidez de le faire, veuillez utiliser Sudo visudo
pour intercepter les erreurs de syntaxe (sinon vous risqueriez de vous isoler complètement de Sudo
).
Cependant, vous devriez probablement lire Pourquoi les utilisateurs ne devraient-ils jamais utiliser Sudo pour lancer des applications graphiques? avant de continuer.