У меня есть приложение, которое я хочу запускать в качестве службы при запуске системы, и это приложение должно запускаться от имени определенного пользователя (это приложение Apache Karaf ). У меня есть все эти настройки, но у пользователя, которого я использую для этого, есть пароль, поэтому при каждом запуске службы необходимо вводить пароль этого пользователя.
В настоящее время у меня есть пользователь со следующими записями в /etc/passwd
и /etc/shadow
:
# /etc/passwd
karaf-test-user:x:1002:1002::/home/karaf-test-user:/usr/sbin/nologin
# /etc/shadow
karaf-test-user::15659:0:99999:7:::
Насколько я вижу, у этого пользователя не установлен пароль, он не может войти, но у него есть домашний каталог (это требуется для приложения). Тем не менее, когда я набираю:
/etc/init.d/karaf-service start
меня просят ввести пароль этого пользователя. Как я могу предотвратить это? Как я могу изменить этого пользователя, чтобы не требовать пароль на этом этапе? Я нашел этот ответ , но он кажется мне хакерским. Это действительно единственный способ? Есть ли лучшие рекомендации, которые нужно соблюдать?
Я работаю в Ubuntu 12.04.1.
Я решил создать выделенного пользователя с паролем, но всегда управлять сервисом как root, для которого не требуется пароль для su
. Чтобы сделать это безопасным, я создал группу karaf-admins
и добавил следующую запись в sudoers
:
%${KARAF_ADMINS} ALL=NOPASSWD: /etc/init.d/karaf-service
Это позволяет членам этой группы запускать такие команды, как sudo /etc/init.d/karaf-service start
, как root без ввода пароль. Сам скрипт karaf-service
затем переключится на выделенного пользователя, которого я настроил. Пока пользователям в karaf-admins
не разрешено редактировать служебный скрипт или символическую ссылку (что им не должно быть), это совершенно безопасно.