Назад | Перейти на главную страницу

xrdp изменение переменной среды PATH

Все,

Я использую xrdp для подключения к системе Centos 7. Я замечаю, что моя переменная среды PATH различается в зависимости от того, использую я RDP или SSH, и я не могу на всю жизнь понять, где это происходит.

Я проверил /etc/xrdp/startwm.sh, но весь код, связанный с PATH, уже закомментирован. Мой / etc / profile довольно стандартен, и в /etc/profile.d ничего такого нет. Кроме того, если бы он был где-то в /etc/profile[.d], то это применялось бы даже во время входа в систему по SSH.

Я видел, как об этом упоминалось несколько раз в разных местах Интернета без реального решения или объяснения.

У кого-нибудь есть объяснение, и кто может указать мне в правильном направлении?

Это сводит меня с ума, не зная, где это происходит!

РЕДАКТИРОВАТЬ:

Я должен был быть более ясным. Это сценарий RDP, с которым мне трудно разобраться. Я могу в значительной степени объяснить все махинации, связанные с PATH, которые я вижу во время сеанса SSH (или даже во время сеанса VNC, в основном в любом случае). Если я просматриваю настройки / etc / profile *, а также свой собственный ~ / .bash_profile, все становится понятным во время сеанса SSH. Но когда я использую RDP, все становится странно.

Помимо /etc/xrdp/startwm.sh, я проверил /etc/security/pam_env.conf, в котором все уже было закомментировано.

РЕДАКТИРОВАТЬ 2:

В сеансе входа в систему через SSH / обычный мой путь выглядит так:

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

В сеансе RDP мой PATH выглядит так:

/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin

Я вижу в / etc / profile, где / usr / local / sbin и / usr / sbin добавляются (или добавляются в начале, если root).

В случае с RDP есть пара дополнений, а также некоторые вещи, которые меняются. Например, внезапно появляется / bin, а также / usr / XllR6 / bin. Кроме того, / usr / bin теперь находится перед / usr / local / bin. Я не хочу в основном эту последнюю часть.

Я знаю, что могу исправить это в моем собственном ~ / .bash_profile, но не понимаю, зачем мне это нужно. Не понимаю, почему путь запутался в такой степени.

Спасибо Джастин

Я не уверен, что это решит вашу проблему, поскольку это влияет на Ubuntu с XRDP и XFCE4. Тем не менее, шанс есть, так что давайте посмотрим.

Я столкнулся с аналогичной проблемой: переменная среды PATH была другой, когда я входил в систему через SSH и через XRDP. Конкретно, когда я открыл окно терминала в XRDP (xterm) переменная PATH не была установлена ​​с локальными путями пользователя (~/bin, ~/.local/bin, и т.д).

Однако эти пути присутствовали, когда я входил в систему через SSH.

Проблема была в не в XRDP, а в том, как сеанс Bash создается с помощью XTerm и SSH. Поскольку SSH создает сеанс входа в систему, загруженные файлы включаются /etc/environment и ~/.profile. В последнем были включены нужные мне пути.

Это было не так с XTerm. Это создает сеанс bash без входа в систему, и таким образом загружает /etc/bash.bashrc и ~/.bashrc.

Я мог это исправить, просто включив строку инициализации PATH из ~/.profile в один из этих двух файлов. Поскольку я хотел, чтобы это повлияло на всех пользователей машины, я включил его в /etc/bash.bashrc:

echo PATH="$HOME/bin:$HOME/.local/bin:$PATH" >> /etc/bash.bashrc

Вы можете найти больше информации о том, как работает man bash

У меня эта проблема была под 6.6. Не знаю, то же ли до 7 лет.

/etc/profile устанавливает общесистемные переменные среды и добавляет пути "sbin" для пользователя "root". /etc/xrdp/startwm.sh загружает этот файл в pre_start() функция, которая выполняется в конце файла.

Но вершина /etc/xrdp/startwm.sh выглядит так:

# if xinitrc exists use it instead, it should load user prefferences
# including desktop environment specified in /etc/sysconfig/desktop
if [ -f /etc/X11/xinit/xinitrc ]
then
    . /etc/X11/xinit/xinitrc
    exit 0
fi 

Так что если /etc/X11/xinit/xinitrc существуют, /etc/xrdp/startwm.sh выполняет его и завершает работу, поэтому оставшиеся настройки не выполняются. / etc / X11 / xinit / xinitrc не загружает / etc / profile, по крайней мере, мой не загружал.

Я прокомментировал чек на xinitrc в startwm.sh:

# if xinitrc exists use it instead, it should load user prefferences
# including desktop environment specified in /etc/sysconfig/desktop
#if [ -f /etc/X11/xinit/xinitrc ]
#then
#    . /etc/X11/xinit/xinitrc
#    exit 0
#fi 

Это решило проблему для меня, и я не заметил разницы в работе XRDP.