Почему /etc/environment не работает для служб systemd

В обоих случаях $@расширяется вашей текущей оболочкой перед запуском find, поскольку она находится в строке -в двойных кавычках. Я предполагаю, что вы установили $1на1(и запустите printf "%s\n" "$@", чтобы увидеть текущие значения позиционных параметров ).

Чтобы проводить ваши эксперименты, как я думаю, вы должны использовать одинарные кавычки вокруг команды и двойные кавычки вокруг $@(, чтобы избежать дополнительного разбиения ); например:

find. -exec sh -c 'ls -l "$@"' sh {} \;
0
02.05.2020, 23:31
1 ответ

Когда пользователь входит в систему, вызываются библиотеки PAM, и обычно конфигурация PAM вызывает pam_env.soдля настройки среды для пользователя. Эта установка включает в себя чтение /etc/environment.

В традиционном сценарии запуска службы SysVinit вы можете использовать suдля запуска службы от имени пользователя, не являющегося -root; suтакже будет вызывать библиотеки PAM и поэтому будет читаться как /etc/environment, что очень похоже на вход обычного пользователя.

Но systemdтакже предназначен для работы во встраиваемых системах, где библиотеки PAM могут вообще отсутствовать. Таким образом, если служба systemd настроена для работы от имени пользователя, отличного от -, systemdбудет обрабатывать инициализацию среды, не полагаясь на какие-либо внешние библиотеки.

См. параграфENVIRONMENTсправочной страницы systemd.exec(5)для получения информации о настройках, которые можно использовать в файле службы для настройки среды службы. Значения по умолчанию, предоставляемые systemd, очень минимальны, поэтому вы должны явно инициализировать то, что нужно вашему сервису (, что обычно является хорошей практикой ).

Например, вы можете просто добавить

EnvironmentFile=/etc/environment

в определение службы.

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

1
28.04.2021, 23:16

Теги

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