Я создал скрипт в /etc/profile.d
(centos6), никак не связанный с puppet, вместо этого он просто копирует некоторые файлы в каталог пользователя. Каким-то образом на главном корпоративном сервере Puppet этот сценарий вмешивается в службу pe-postgresql
и вызывает задержку запуска сервера при запуске и не позволяет этой службе работать.
Этот скрипт профиля имеет функцию, которая запрашивает пользователя при входе в систему и спрашивает, хочет ли он установить (y, n), если один из его файлов не найден. Я подозреваю, что это происходит в фоне чего-то, когда марионеточная служба запускается где-то, вызывая сбой этой службы.
#/etc/profile.d/custom.sh
if [ ! f ~/.custom ]; then
logPrompted;
while true; do
read -p "Do you want to install?)" yn
case $yn in
[Yy]* )
installCustom;
break;;
[Nn]* )
logOptedOut;
break;;
* ) echo "Please enter y or n!";;
esac
done
fi
Как только файл перемещается из /etc/profile.d
, проблемы прекращаются. Например, sudo service pe-postgresql start
завершается ошибкой каждый раз, когда этот сценарий работает.
Когда я смотрю на пользователей марионеток, cat /etc/passwd | grep pe-
Я могу убедиться, что все они nologin
.
Здесь либо что-то, чего мне не хватает, либо другой пользователь службы кукол, которого мне не хватает. который, возможно, интерактивный.
Я добавил ведение журнала при каждом запуске, чтобы видеть, когда он запускался (logPrompted
), перед вопросом, сообщая $(whoami)
, надеясь раскрыть скрытого пользователя, и в журнале я действительно вижу, что pe-postgres
регистрируется каждый раз, «Я "попробуйте перезапустить службу, но это не соответствует.
глядя на /etc /passwd этот пользователь pe-postgres:x:492:493:Puppet Enterprise PostgreSQL Server:/opt/puppet/var/lib/pgsql:/sbin/nologin
Я пытаюсь выяснить, как я могу избежать того, чтобы этот пользователь или любой пользователь nologin
взаимодействовал со сценарием этого профиля.
Могу ли я что-то добавить в начало скрипта profile.d, чтобы защитить его от подобных вещей?