XRDP 세션을 통해 액세스 할 때 Ubuntu의 경로가 다릅니다


9

멍청한 여기 : 문제가 있습니다 .SSH를 통해 서버에 액세스하면 $ PATH가 정확합니다.

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

그러나 XRDP 세션을 통해 서버를 열고 터미널로 이동하면 잘못된 PATH가 표시됩니다 .

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

두 스크린 샷 : 스크린 샷

"Package Installer"를 사용하여 무언가를 설치하려고하면이 오류가 표시되기 때문에 문제가 발생합니다.

dpkg: warning: 'ldconfig' not found in PATH

답변:


7

Ubuntu-18.04의 경우 /etc/pam.d/xrdp-sesman 처음에 다음 줄을 편집 하고 입력하십시오.

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

예, 이것없이 xrdp 세션에는 my /etc/environment!에 정의 된 모든 변수가 없습니다 .
wisbucky

5

1

시스템 전체 기본 PATH는에 정의되어 /etc/environment있습니다. 먼저이 값이 정상 값으로 설정되어 있는지 확인하십시오. 참고로 다음은 기본 설치와 동일합니다.

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

2

경우 /etc/environment제정신이고 문제가 계속, 당신의 기본 경로를 재정의 할 수 있습니다 ~/.bashrc. 예를 들어, .bashrc에 디렉토리가 있고 PATH에 디렉토리가 있고 PATH에없는 경우에만 디렉토리를 추가합니다.

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

스크린 샷에서 루트 로그인을 활성화 한 것으로 보이므로 루트의 .bashrc도 설정해야합니다. 그런데 우분투에서 루트가 기본적으로 로그인 할 수 없기 때문에이 구성은 테스트가 적고 문제와 관련이있을 수 있습니다.

처음 두 가지 방법이 실패하면 XRDP 클라이언트가 이국적인 작업을 수행하고 있는지 확인하십시오. 그렇다면 정상적으로 작동하도록 구성하거나 해결 방법을 식별해야합니다.

최신 정보

나는 시스템을 둘러 보았습니다. 다음 명령을 사용하여 PATH를 지정하는 시스템의 모든 위치를 찾을 수 있습니다 ( sudo일부 /etc사용자는 아래 파일 중 일부 를 읽을 수 없기 때문에 ) :

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

많은 장소를 무시하는 것이 안전하다고 생각하여 다음과 같은 명령이 발생합니다.

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

가능한 것처럼 보이는 하나의 파일은 (실제로 그것에 대해 많이 알지 못하지만)입니다 /etc/login.defs. 당신은 그것을 볼 수 있습니다.

또한, 도트 파일을 그 리핑 할 수도 있습니다.

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

"/ environment"파일은 정상입니다. ~ / .bashrc에 올바른 경로를 추가하면 명령이 터미널에서 실행되지만 Ubuntu "Package Installer"에서는 여전히 작동하지 않습니다. 문제의 근본을 찾을 수 없었지만 지금 해결책이 있습니다 ./bin/에 필요한 각 프로그램 (ldconfig 등)에 대한 심볼릭 링크를 만들었습니다 ...이 보안 위반 일 가능성이 있으므로이 질문을 남길 것입니다 더 나은 솔루션을 가진 사람을 위해 열려 있습니다.
Ivan Castellanos

@IvanCastellanos : AFAIK라는 정확한 이름의 프로그램이 없기 때문에 "패키지 설치 프로그램"이 무엇을 의미하는지 잘 모르겠습니다. 패키지 설치 단계를 설명해 주시겠습니까? 그리고 이것은 GUI 또는 명령 줄 설치 프로그램입니까?
Scott Severance

죄송합니다. "GDebi Packpage Installer"(GUI)를 의미합니다.
Ivan Castellanos 2012 년

@IvanCastellanos : 당신은 그것을 시작 gksudo gdebi-gtk /full/path/to/package.deb합니까? 나는 그것이 약간 까다 롭다는 것을 알았습니다. 그렇다면 시작된 환경을 상속해야합니다.
Scott Severance 5

3

전체 공개 : 우분투를 사용하지 않지만 데비안에서도 동일한 문제가 발생했습니다.

xrdp는 /etc/xrdp/startwm.sh를 시작합니다 (Ubuntu가이 위치를 수정하지 않은 경우). 이 줄을 추가했습니다 :

. /etc/profile

/etc/xrdp/startwm.sh 맨 위에 PATH가 올바르게 설정되었습니다.

우분투의 경우

. /etc/environment

/etc/xrdp/startwm.sh의 맨 위에서 동일한 작업을 수행 할 수 있습니다.


2

이것은 나에게도 잠시 걸림돌. /etc/environment쉘 스크립트가 아니기 때문에 하나의 스크립트로 호출 할 수 없습니다. 나를 위해 일한 것은 pam에서 xrdp 세션 관리자 "sesman"스크립트를 편집하는 것이 었습니다. /etc/pam.d/sesman파일에 "session"줄을 추가했습니다 :

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

이렇게하면 세션 관리자 /etc/environment가 로그인시 파일을 로드합니다 .


1

이론적으로

. /etc/environment

작동하지만 작동하지 않습니다. 문제를 해결하기 위해 .bashrc 상단에 넣었습니다.


1

이전 답변 덕분에 나는 그런 해결책을 찾았습니다.

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

최적이 아니지만 작동하지 않을 수 있습니다 (Ubuntu 12.04).


1

@ John : /etc/xrdpstartwm.sh를 확인해야한다고 생각합니다.

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

즉, / etc / X11xinit / xinitrc가 존재하는 경우 해당 파일이 대신 실행되며 추가하는 데 큰 도움이되지 않습니다.

. /etc/environment

/etc/xrdpstartwm.sh로 이동하십시오. :-)

/ 헤르츠

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.