Данная статья применима к:
- 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 из командной строки командой:
Если в качестве оболочки входа используется оболочка bash, то:
- при входе в пользовательскую консольную сессию (interactive login shell) выполняется системный файлы /etc/profile, а затем проверяются пользовательские файлы ~/.bash_profile, ~/.bash_login, и ~/.profile. Пользовательские файлы проверяются в указанном порядке и выполняется первый из найденных и доступных для чтения;
- при интерактивном запуске в пользовательской сессии (interactive shell not login shell) выполняется пользовательский файл ~/.bashrc;
- при неинтерактивном запуске (выполнении сценария) проверяется значение переменной окружения BASH_ENV, и делается попытка исполнить указанный файл.
Кроме того, поведение bash может изменяться в зависимости от способа вызова и опций команды, подробнее см. man bash.
Проверить, какую оболочку входа использует пользователь можно командой:
Значения переменных окружения должны присваиваться в используемых файлах.
Системные переменные окружения
Присвоение значений переменным окружения для оболочек входа на системном уровне выполняется в файле /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: