Noob here: j'ai un problème, quand j'accède à mon serveur via SSH, le $ PATH est correct
root@ks391320:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Mais quand j'ouvre mon serveur via une session XRDP et que je vais au terminal, il montre un chemin incorrect :
root@ks391320:~# echo $PATH
/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin
Et cela crée un problème car lorsque j'essaie d'installer quelque chose à l'aide du "Package Installer", cette erreur s'affiche (entre autres).
dpkg: warning: 'ldconfig' not found in PATH
Pour Ubuntu-18.04, éditez /etc/pam.d/xrdp-sesman
et entrez les lignes suivantes au début:
session required pam_env.so readenv=1 envfile=/etc/environment
session required pam_env.so readenv=1 envfile=/etc/default/locale
Le PATH par défaut à l'échelle du système est défini dans /etc/environment
. Tout d'abord, vérifiez qu'il est défini sur une valeur saine. Pour référence, voici le mien, qui est identique à une installation par défaut:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Si /etc/environment
est sain et que vous rencontrez toujours des problèmes, vous pouvez remplacer le PATH par défaut dans ~/.bashrc
. Par exemple, j'ai ceci dans mon .bashrc qui ajoute un répertoire à mon PATH si et seulement s'il existe et qu'il ne l'est pas déjà:
if [ -d "$HOME/bin" ]; then
if [[ $PATH =~ $HOME/bin ]]; then :
else export PATH="$HOME/bin:$PATH"
fi
fi
Comme il ressort de votre capture d'écran que vous avez activé les connexions root, veillez également à définir le fichier .bashrc de la racine. (En passant, étant donné que root ne peut pas se connecter par défaut dans Ubuntu, cette configuration est probablement moins testée et pourrait éventuellement être liée à votre problème.)
Si les deux premières méthodes échouent, vérifiez si votre client XRDP fait quelque chose d'exotique. Si tel est le cas, vous devrez soit le configurer pour fonctionner normalement, soit identifier un moyen de le contourner.
J'ai fait quelques recherches dans le système. Vous pouvez trouver tous les emplacements de votre système spécifiant un PATH à l'aide de la commande suivante (la Sudo
est présente car certains fichiers sous /etc
sont illisibles pour les utilisateurs normaux):
Sudo egrep -nr '\bPATH' /etc | less
Je pense qu'il est prudent d'ignorer beaucoup de ces endroits, ce qui entraîne la commande suivante:
Sudo egrep -nr '\bPATH' /etc | egrep -v '^/etc/(init|rc|ppp|bash_c)' | egrep -v '^Binary' | less
Un fichier qui semble possible (bien que je ne sache vraiment pas grand chose à ce sujet) est /etc/login.defs
. Vous pouvez y jeter un coup d'oeil.
De plus, vous pouvez aussi grep vos fichiers de points:
egrep -nr '\bPATH' $HOME/.* | less
Divulgation complète: je n'utilise pas Ubuntu ... mais j'ai eu le même problème avec Debian.
xrdp lance /etc/xrdp/startwm.sh (sauf si Ubuntu a modifié cet emplacement). J'ai ajouté cette ligne:
. /etc/profile
au début de /etc/xrdp/startwm.sh et le PATH est maintenant correctement défini.
Pour Ubuntu, ajouter
. /etc/environment
au début de /etc/xrdp/startwm.sh pourrait faire de même.
Cela m'a stoppé pendant un moment aussi. /etc/environment
n'est pas un script Shell, vous ne pouvez donc pas l'appeler comme tel. Ce qui a fonctionné pour moi a été d’éditer le script "sesman" du gestionnaire de session xrdp dans pam. J'ai ajouté la ligne "session" à mon fichier /etc/pam.d/sesman
:
#%PAM-1.0
session required pam_env.so readenv=1 user_readenv=0
@include common-auth
@include common-account
@include common-session
@include common-password
Cela oblige le gestionnaire de session à charger le fichier /etc/environment
lors de la connexion.
@ John: Je pense que vous devez vérifier votre fichier /etc/xrdpstartwm.sh - les premières lignes de mes lectures,
if [ -f /etc/X11/xinit/xinitrc ]
then
. /etc/X11/xinit/xinitrc
exit 0
fi**
Cela signifie que si/etc/X11xinit/xinitrc existe, ce fichier sera exécuté à la place - et cela n'aidera pas beaucoup d'ajouter la
. /etc/environment
vers /etc/xrdpstartwm.sh. :-)
/ Par Hertz
En théorie, ajouter
. /etc/environment
fonctionnerait mais ça ne marche pas. Je viens de le mettre en haut de mon .bashrc pour corriger le problème
Grâce aux réponses précédentes, je suis arrivé à une telle solution:
cat /etc/xrdp/startwm.sh | sed "s/. \/etc\/X11\/Xsession/. \/etc\/environment/" > ./startwm.sh && echo ". /etc/X11/Xsession" >> ./startwm.sh && Sudo mv ./startwm.sh /etc/xrdp/startwm.sh && Sudo chmod 755 /etc/xrdp/startwm.sh
Peut-être pas le plus optimal mais fonctionnel (Ubuntu 12.04).