Ubuntu имеет другой путь при доступе через сеанс XRDP

Noob здесь: у меня проблема, когда я получаю доступ к своему серверу через SSH, $ PATH правильный

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

Но когда я открываю свой сервер через сеанс XRDP и иду в терминал, он показывает неверный путь :

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

Снимок экрана обоих: Screenshot

И это создает проблему, потому что, когда я пытаюсь установить что-то с помощью «Package Installer», он показывает эту ошибку (среди прочих)

dpkg: warning: 'ldconfig' not found in PATH
9
задан 3 January 2012 в 10:09

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
0
ответ дан 3 January 2012 в 10:09

Полное раскрытие: я не использую Ubuntu ... но у меня была такая же проблема с Debian.

xrdp запускает /etc/xrdp/startwm.sh (если только Ubuntu не изменил это местоположение). Я добавил эту строку:

. /etc/profile

в начало /etc/xrdp/startwm.sh, и теперь PATH установлен правильно.

Для Ubuntu добавление

. /etc/environment

в начало /etc/xrdp/startwm.sh может сделать то же самое.

0
ответ дан 3 January 2012 в 10:09

Это тоже меня озадачило. /etc/environment не является сценарием оболочки, поэтому его нельзя назвать одним. Что мне помогло, так это отредактировать скрипт "sesman" менеджера сессий xrdp в pam. Я добавил строку «сеанс» в мой файл /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

Это заставляет менеджер сеанса загружать файл /etc/environment при входе в систему.

0
ответ дан 3 January 2012 в 10:09

Благодаря предыдущим ответам я пришел к такому решению:

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).

0
ответ дан 3 January 2012 в 10:09

1

Общесистемный путь по умолчанию определен в /etc/environment. Во-первых, убедитесь, что установлено правильное значение. Для справки, вот мой, который совпадает с установкой по умолчанию:

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

2

Если /etc/environment нормальный, но у вас все еще есть проблемы, вы можете переопределить настройку по умолчанию PATH в ~/.bashrc. Например, у меня есть это в моем .bashrc, который добавляет каталог в мой PATH, если и только если он существует и еще не находится в моем PATH:

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

Так как из вашего скриншота видно, что вы разрешены входы root, не забудьте также установить root .bashrc. (Кстати, поскольку root не может войти в систему по умолчанию в Ubuntu, эта конфигурация предположительно менее проверена и может быть связана с вашей проблемой.)

3

Если первые два метода потерпите неудачу, затем проверьте, делает ли ваш 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
0
ответ дан 3 January 2012 в 10:09

В теории добавление

. /etc/environment

будет работать, но это не так. Я просто положил его на верхнюю часть моего .bashrc, чтобы исправить проблему

0
ответ дан 3 January 2012 в 10:09

@ John: Я полагаю, вам нужно проверить ваш /etc/xrdpstartwm.sh - первые строки в моем файле читаются как

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

будет выполнен вместо этого - и это не сильно поможет добавить

. /etc/environment

в /etc/xrdpstartwm.sh. : -)

/ на герц

0
ответ дан 3 January 2012 в 10:09

Другие вопросы по тегам:

Похожие вопросы: