O Ubuntu possui um PATH diferente quando o acesso via sessão XRDP

5

Noob aqui: Eu tenho um problema, quando eu acesso meu servidor via SSH, o $ PATH está correto

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

Mas quando eu abro meu servidor via sessão XRDP e vou para o terminal, ele mostra um PATH incorreto :

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

Captura de tela de ambos:

E isso cria um problema porque quando eu tento instalar algo usando o "Package Installer" ele mostra esse erro (entre outros)

dpkg: warning: 'ldconfig' not found in PATH
    
por Ivan Castellanos 03.01.2012 / 01:08

6 respostas

4

1

O PATH padrão em todo o sistema é definido em /etc/environment . Primeiro, verifique se está definido para um valor sã. Para referência, aqui está o meu, que é o mesmo que uma instalação padrão:

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

2

Se /etc/environment estiver correto e você ainda tiver problemas, será possível substituir o PATH padrão em ~/.bashrc . Por exemplo, eu tenho isso no meu .bashrc que acrescenta um diretório ao meu PATH se e somente se ele existe e ainda não está no meu PATH:

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

Uma vez que aparece na sua captura de tela que você ativou logins de root, certifique-se de configurar também o .bashrc do root. (A propósito, como o root não pode logar por padrão no Ubuntu, esta configuração é presumivelmente menos testada e pode estar relacionada ao seu problema.)

3

Se os dois primeiros métodos falharem, verifique se o seu cliente XRDP está fazendo algo exótico. Em caso afirmativo, você terá que configurá-lo para funcionar normalmente ou identificar uma maneira de contorná-lo.

Atualizar

Eu tenho feito algumas pesquisas no sistema. Você pode encontrar todos os locais em seu sistema que especificam um PATH com o seguinte comando (o sudo está lá porque alguns arquivos em /etc são ilegíveis para usuários normais):

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

Acho que é seguro ignorar muitos desses lugares, resultando no seguinte comando:

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

Um arquivo que parece possível (embora eu realmente não saiba muito sobre isso) é /etc/login.defs . Você pode dar uma olhada nisso.

Além disso, você também pode configurar seus arquivos de ponto:

egrep -nr '\bPATH' $HOME/.* | less
    
por Scott Severance 03.01.2012 / 07:22
1

Divulgação completa: eu não uso o Ubuntu ... mas tive o mesmo problema com o Debian.

O xrdp lança o /etc/xrdp/startwm.sh (a menos que o Ubuntu tenha modificado este local). Eu adicionei esta linha:

. /etc/profile

na parte superior de /etc/xrdp/startwm.sh e o PATH agora está configurado corretamente.

Para o Ubuntu, adicionando

. /etc/environment

no topo do /etc/xrdp/startwm.sh pode fazer o mesmo.

    
por EMI 20.04.2012 / 04:42
1

Isso me deixou perplexo por um tempo também. /etc/environment não é um script de shell, então você não pode chamá-lo como um. O que funcionou para mim foi editar o script do gerenciador de sessões xrdp "sesman" em pam.  Eu adicionei a linha "session" ao meu arquivo /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

Isso faz com que o gerenciador de sessão carregue o arquivo /etc/environment no login.

    
por Dave C 16.02.2017 / 15:41
0

Em teoria, adicionando

. /etc/environment

funcionaria, mas não funciona. Acabei de colocá-lo no topo da minha .bashrc para corrigir o problema

    
por John 29.09.2012 / 14:28
0

Graças às respostas anteriores, cheguei a essa solução:

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

Pode não ser o mais ideal, mas funciona (Ubuntu 12.04).

    
por Alex Fliker 07.11.2013 / 11:42
0

@ John: Eu acredito que você precisa verificar o seu /etc/xrdpstartwm.sh - as primeiras linhas na minha leem,

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

Isso significa que se / etc / X11xinit / xinitrc existir, esse arquivo será executado - e não ajudará muito adicionar o

. /etc/environment

para /etc/xrdpstartwm.sh. : -)

/ Por Hertz

    
por Per Hertz 15.09.2015 / 10:14