Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Оглавление


Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Special Edition РУСБ.10015-16 исп. 2
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
  • Astra Linux Common Edition 2.12


Переменные окружения для пользовательских сессий

Присвоение пользовательских значений переменным окружения может быть выполнено в файле .profile, который расположен в домашнем каталоге пользователя. Этот файл выполняется оболочкой входа (login shell) при каждом входе в пользовательскую сессию после выполнения системного файла /etc/profile, т.е. может переопределять значения переменных окружения . заданные на системном уровне.

Наиболее частое применение этого файла - изменение значения переменной окружения PATH (список каталогов, в которых производится поиск исполняемых файлов). Например, для добавления в список каталога /opt/wine-6.17 (см. Установка wine на Astra Linux) следует добавить в файл .profile строку:

Блок кода
PATH=/opt/wine-6.17:$PATH

Другим примером часто используемых переменных окружения являются переменные:

  • LD_PRELOAD - список библиотек, загружаемых до загрузки других библиотек, независимо от упоминания их запускаемой программе;
  • LD_LIBRARY_PATH - список каталогов, в которых будет выполняться поиск динамических библиотек, упоминаемых в запускаемой программе.

Подробнее см. man ld.so.

Значения этих переменных могут задаваться так же, как значения переменной PATH в примере выше:

Блок кода
LD_PRELOAD=/usr/lib/spo/spo.so:$LD_PRELOAD
LD_LIBRARY_PATH="/user/lib/spo:$LD_LIBRARY_PATH


Информация

Использование переменной окружения LD_PRELOAD является небезопасным, так как путем подмены библиотек позволяет внедрить в приложения непредусмотренные возможности.

"При запуске процесса с установленными привилегиями загрузчик динамических библиотек осуществляет сброс переменных среды окружения, позволяющих осуществлять загрузку динамических библиотек из нестандартных каталогов LD_LIBRARY_PATH и LD_PRELOAD. Таким образом, установка привилегий для пользователя может привести к невозможности запуска приложений, использующих динамическую загрузку библиотек из нестандартных каталогов."
"Руководство по комплексу средств защиты информации",  ч.1

Для того, чтобы применить сделанные изменения не перезапуская пользовательскую сессию, можно выполнить файл .profile из командной строки командой:

Command
. ~/.profile

или

Command
source ~/.profile


Информация

Если в качестве оболочки входа используется оболочка bash, то:

  • при входе в пользовательскую консольную сессию (interactive login shell) выполняется системный файлы /etc/profile, а затем проверяются пользовательские файлы ~/.bash_profile, ~/.bash_login, и ~/.profile. Пользовательские файлы проверяются в указанном порядке и выполняется первый из найденных и доступных для чтения;
  • при интерактивном запуске в пользовательской сессии (interactive shell not login shell) выполняется пользовательский файл ~/.bashrc;
  • при неинтерактивном запуске (выполнении сценария) проверяется значение переменной окружения BASH_ENV, и делается попытка исполнить указанный файл.

Кроме того, поведение bash может изменяться в зависимости от способа вызова и опций команды, подробнее см. man bash.
Проверить, какую оболочку входа использует пользователь можно командой:

Command
getent passwd $USER | sed "s/.*://"

Значения переменных окружения должны присваиваться в используемых файлах.



Системные переменные окружения

Присвоение значений переменным окружения для оболочек входа на системном уровне выполняется в файле /etc/profile (и, если существует каталог /etc/profile.d, сценариями в файлах с расширением .sh, находящихся в этом каталоге). В отличие от пользовательских переменных системные переменные должны экспортироваться, например:

Блок кода
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
export PATH

Присвоенные значения могут быть переопределены в пользовательских файлах (см. выше).

Переменные окружения PAM-стека

При выполнении PAM-стека (аутентификация и авторизация пользователей) используется отдельное окружение, системные параметры которого задаются в файлах /etc/security/pam_env.conf и /etc/environment, а пользовательские - в файлах ~/.pam_environment.
Подробнее см. man pam_env и man pam_env.conf.

Переменные окружения пользовательских служб systemd

Конфигурационные файлы при запуске пользовательских служб извлекаются из каталогов:

  • ~/.config/environment.d/*.conf
  • /etc/environment.d/*.conf
  • /run/environment.d/*.conf
  • /usr/lib/environment.d/*.conf
  • /etc/environment

Подробнее cм. man environment.d.

Переменные окружения для графической сессии Xorg

Переменные окружения для графической сессии Xorg можно задавать в файле  /etc/X11/fly-dm/Xsession. Синтаксис такой же, как и для других сценариев bash:

Блок кода
export <имя_переменной>=<значение>


Переменные окружения отдельных команд командной строки

При работе в командной строке переменные окружения можно задавать прямо в вызовах команд перед командой в формате <имя_переменной_окружения>=<значение_переменной_окружения>. Область действия таких переменных ограничивается одной командой. Например, присвоение переменное окружения KRB5_TRACE значения /dev/stdout для вывода отладочной информации команды kinit:

Command
KRB5_TRACE=/dev/stdout kinit admin

При использовании sudo значение должно быть задано непосредственно перед командой, например, присвоение переменной окружения PKISPAWN_STARTUP_TIMEOUT_SECONDS значения 60 для выполнения команды astra-freeipa-server с правами администратора:

Command
sudo PKISPAWN_STARTUP_TIMEOUT_SECONDS=600 astra-freeipa-server -o --dogtag