Ubuntu ha un PERCORSO diverso quando si accede tramite la sessione XRDP


9

Noob qui: ho un problema, quando accedo al mio server tramite SSH, $ PATH è corretto

root@ks391320:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Ma quando apro il mio server tramite la sessione XRDP e vado al terminale mostra un PERCORSO errato :

root@ks391320:~# echo $PATH
/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin

Schermata di entrambi: Immagine dello schermo

E questo crea un problema perché quando provo ad installare qualcosa usando "Package Installer" mostra questo errore (tra gli altri)

dpkg: warning: 'ldconfig' not found in PATH

Risposte:


7

Per Ubuntu-18.04, modifica /etc/pam.d/xrdp-sesman e inserisci le seguenti righe all'inizio:

session       required   pam_env.so readenv=1 envfile=/etc/environment
session       required   pam_env.so readenv=1 envfile=/etc/default/locale

Sì, senza questo, nelle sessioni xrdp mancavano tutte le variabili definite nella mia /etc/environment!
Wisbucky,

5

1

Il PERCORSO predefinito a livello di sistema è definito in /etc/environment. Innanzitutto, verifica che sia impostato su un valore sano. Per riferimento, ecco il mio, che è lo stesso di un'installazione predefinita:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

2

Se /etc/environmentè sano e hai ancora problemi, puoi ignorare il PERCORSO predefinito in ~/.bashrc. Ad esempio, ho questo nel mio .bashrc che aggiunge una directory al mio PERCORSO se e solo se esiste e non è già nel mio PERCORSO:

if [ -d "$HOME/bin" ]; then
    if [[ $PATH =~ $HOME/bin ]]; then :
    else export PATH="$HOME/bin:$PATH"
    fi
fi

Dato che dal tuo screenshot appare che hai abilitato gli accessi root, assicurati di impostare anche il .bashrc di root. (A proposito, poiché root non può accedere per impostazione predefinita in Ubuntu, questa configurazione è presumibilmente meno testata e potrebbe essere correlata al tuo problema.)

3

Se i primi due metodi falliscono, controlla se il tuo client XRDP sta facendo qualcosa di esotico. In tal caso, dovrai configurarlo per funzionare normalmente o identificare un modo per aggirarlo.

Aggiornare

Ho fatto un po 'di controllo del sistema. Puoi trovare tutte le posizioni sul tuo sistema che specificano un PERCORSO con il seguente comando ( sudoc'è perché alcuni file sotto /etcsono illeggibili dagli utenti normali):

sudo egrep -nr '\bPATH' /etc | less

Penso che sia sicuro ignorare molti di quei posti, risultando nel seguente comando:

sudo egrep -nr '\bPATH' /etc | egrep -v '^/etc/(init|rc|ppp|bash_c)' | egrep -v '^Binary' | less

Un file che sembra possibile (anche se in realtà non ne so molto) è /etc/login.defs. Potresti dare un'occhiata.

Inoltre, puoi grep anche i tuoi dotfile:

egrep -nr '\bPATH' $HOME/.* | less

Il file "environment" è normale, aggiungendo i percorsi corretti a ~ / .bashrc fa funzionare i comandi sul terminale ma non funziona ancora sul "Package Installer" di Ubuntu. Non sono riuscito a trovare la radice del problema, ma ora ho una soluzione, ho creato un collegamento simbolico in / bin / per ogni programma richiesto (ldconfig, ecc.) ... questa è probabilmente una violazione della sicurezza, quindi lascerò questa domanda aperto nel caso qualcuno abbia una soluzione migliore.
Ivan Castellanos,

@IvanCastellanos: Non sono sicuro di cosa intendi per "installer di pacchetti", poiché non esiste un programma con quel nome esatto AFAIK. Potresti descrivere i passaggi che stai eseguendo per installare i pacchetti? E questa è una GUI o un programma di installazione da riga di comando?
Scott Severance

Siamo spiacenti, intendo "GDebi Packpage Installer" (GUI).
Ivan Castellanos il

@IvanCastellanos: Lo lanci come gksudo gdebi-gtk /full/path/to/package.deb? L'ho trovato un po 'schizzinoso. In tal caso, dovrebbe ereditare l'ambiente da cui è stato avviato.
Scott Severance

3

Divulgazione completa: non uso Ubuntu ... ma ho avuto lo stesso problema con Debian.

xrdp avvia /etc/xrdp/startwm.sh (a meno che Ubuntu non abbia modificato questa posizione). Ho aggiunto questa riga:

. /etc/profile

all'inizio di /etc/xrdp/startwm.sh e il PERCORSO è ora impostato correttamente.

Per Ubuntu, aggiungendo

. /etc/environment

all'inizio di /etc/xrdp/startwm.sh potrebbe fare lo stesso.


2

Questo mi ha sconcertato anche per un po '. /etc/environmentnon è uno script di shell, quindi non puoi chiamarlo come uno. Quello che ha funzionato per me è stato modificare lo script "sesman" del gestore sessioni xrdp in pam. Ho aggiunto la riga "sessione" al mio /etc/pam.d/sesmanfile:

#%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

Questo fa in modo che il gestore sessioni carichi il /etc/environmentfile all'accesso.


1

In teoria aggiungendo

. /etc/environment

funzionerebbe ma non lo fa. L'ho appena messo in cima al mio .bashrc per correggere il problema


1

Grazie alle risposte precedenti sono arrivato a una tale soluzione:

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

Potrebbe non essere il migliore ma funzionante (Ubuntu 12.04).


1

@John: credo che tu debba controllare il tuo /etc/xrdpstartwm.sh - le prime righe nella mia sono le letture,

if [ -f /etc/X11/xinit/xinitrc ]
then
    . /etc/X11/xinit/xinitrc
    exit 0
fi**

Ciò significa che se esiste / etc / X11xinit / xinitrc, quel file verrà eseguito invece - e non sarà di grande aiuto aggiungere il

. /etc/environment

su /etc/xrdpstartwm.sh. :-)

/ Per Hertz

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.