Debian игнорирует переменные окружения PAM (в то время как Arch нет)

Вопрос или проблема

У меня есть странная проблема с моей системой Debian Sid. Я хочу установить глобальную переменную окружения в /etc/environment, которую должен читать модуль pam_env. К сожалению, после повторного входа в систему переменная не устанавливается.

На другой системе Arch Linux та же переменная, установленная в /etc/environment, определяется как ожидается. Просто для теста я попытался установить локальную переменную окружения в .pam_environment, и снова на Debian она не определяется, в то время как на Arch — да.

Я использую GDM на Debian и SDDM на Arch в качестве менеджеров входа. Что я упускаю? На какие (PAM или GDM) конфигурационные файлы мне следует посмотреть?

ИЗМЕНЕНИЕ:
вывод команды grep pam_env /etc/pam.d/*

$ grep pam_env /etc/pam.d/*
/etc/pam.d/atd:auth     required        pam_env.so
/etc/pam.d/cron:# Чтение переменных окружения из файлов по умолчанию pam_env, /etc/environment
/etc/pam.d/cron:# и /etc/security/pam_env.conf.
/etc/pam.d/cron:session       required   pam_env.so
/etc/pam.d/cron:session       required   pam_env.so envfile=/etc/default/locale
/etc/pam.d/gdm-autologin:session required        pam_env.so readenv=1
/etc/pam.d/gdm-autologin:session required        pam_env.so readenv=1 envfile=/etc/default/locale
/etc/pam.d/gdm-launch-environment:session required        pam_env.so readenv=1
/etc/pam.d/gdm-launch-environment:session required        pam_env.so readenv=1 envfile=/etc/default/locale
/etc/pam.d/gdm-password:session required        pam_env.so readenv=1
/etc/pam.d/gdm-password:session required        pam_env.so readenv=1 envfile=/etc/default/locale
/etc/pam.d/login:# файл /etc/security/pam_env.conf.
/etc/pam.d/login:session       required   pam_env.so readenv=1
/etc/pam.d/login:session       required   pam_env.so readenv=1 envfile=/etc/default/locale
/etc/pam.d/polkit-1:session       required   pam_env.so readenv=1 user_readenv=0
/etc/pam.d/polkit-1:session       required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
/etc/pam.d/su:# файл /etc/security/pam_env.conf.
/etc/pam.d/su:session       required   pam_env.so readenv=1
/etc/pam.d/su:session       required   pam_env.so readenv=1 envfile=/etc/default/locale

Для потомков: если на Debian вы добавите

session required        pam_env.so user_readenv=1

в /etc/pam.d/gdm-password, то PAM действительно применит ваши настройки переменных окружения из ~/.pam_environment при входе по паролю с использованием GDM. Если вы входите другим способом, то ищите соответствующий файл в /etc/pam.d.

Ответ или решение

Ваша проблема заключается в том, что на Debian по умолчанию PAM (Pluggable Authentication Modules) не применяет настройки переменных окружения, находящихся в файле ~/.pam_environment или в файле /etc/environment. В отличие от Arch Linux, где это поведение более "прозрачно", Debian требует определенных настроек для корректной работы данной функциональности.

Для решения вашей проблемы необходимо добавить необходимую конфигурацию в файлы PAM, отвечающие за логин через GDM (GNOME Display Manager). Вот шаги, которые вам нужно выполнить:

  1. Откройте файл конфигурации PAM для GDM:

    Вам нужно редактировать файл /etc/pam.d/gdm-password. Для этого выполните команду:

    sudo nano /etc/pam.d/gdm-password
  2. Добавьте строку для чтения переменных окружения:

    Вставьте следующую строку в файл, чтобы разрешить PAM использовать переменные окружения из ~/.pam_environment:

    session required pam_env.so user_readenv=1
  3. Сохраните изменения и выйдите из редактора.

  4. Перезагрузите систему или выполните выход из сеанса и повторно войдите, чтобы изменения вступили в силу.

Теперь при авторизации через GDM PAM будет корректно загружать переменные окружения, определенные в ~/.pam_environment.

Если у вас есть другие дисплейные менеджеры, такие как SDDM, вам нужно аналогичным образом отредактировать соответствующие файлы в /etc/pam.d/, добавив строку с pam_env.so, как показано выше.

Дополнительные советы:

  • Убедитесь, что ваши переменные окружения правильно прописаны. Формат должен быть: VARIABLE_NAME=value, где VARIABLE_NAME — название переменной окружения, а value — её значение.

  • Проверьте, какие другие PAM модули могут влиять на ваше окружение. Например, модули, связанные с polkit, могут также влиять на доступные переменные окружения.

Если выполненные шаги не приведут к желаемому результату, вы также можете проверить файлы журналов для получения дополнительной информации о сбоях при чтении переменных окружения, что может помочь в диагностике проблемы.

Оцените материал
Добавить комментарий

Капча загружается...