Какой рекомендуемый способ гарантировать, что экземпляр Tomcat7 запущен от имени пользователя tomcat7 (или любого другого)?
Полагаю, что я могу изменить tomcat7-instance/bin/startup.sh
и tomcat7-instance/bin/shutdown.sh
добавить «su tomcat7» вверху.
В Tomcat6, я думаю, это была переменная окружения TOMCAT6_USER
.
решение1
Самый распространенный способ — установить стандартный tomcat7
пакет apt-get
и запустить его с помощью:
sudo service tomcat7 start
Пользователь и группа по умолчанию настроены, /etc/default/tomcat7
как вы можете видеть в этом отрывке:
# Run Tomcat as this user ID. Not setting this or leaving it blank will use the
# default of tomcat7.
TOMCAT7_USER=tomcat7
# Run Tomcat as this group ID. Not setting this or leaving it blank will use
# the default of tomcat7.
TOMCAT7_GROUP=tomcat7
решение2
EDIT: Пожалуйста, прочтите комментарии ниже! Это решение может быть применимо не ко всем ситуациям.
Принятый ответ отличный, но поскольку я использую Tomcat 7 на Ubuntu 14.04, мне нужно было сделать некоторые дополнительные вещи, чтобы все заработало:
- Вам необходимо остановить службу tomcat перед редактированием файла
/etc/default/tomcat7
. После смены пользователя и группы остановить службу, используя старого пользователя, больше не получится. Измените пользователя и группу в файле
/etc/default/tomcat7
Вам нужно изменить владельца папки
/var/log/tomcat7
и всех ее файлов. Обратите внимание, что сохранение группы adm является преимуществом, так как все пользователи adm могут читать журналы.sudo chown -R newuser:adm /var/log/tomcat7
Изменить владельца папки
/var/lib/tomcat7/webapps
sudo chown -R newuser:newgroup /var/lib/tomcat7/webapps
При работе на порту 80/443 в Ubuntu 14.04 необходимо изменить владельца файлов authbind:
sudo chown newuser /etc/authbind/byport/80
sudo chown newuser /etc/authbind/byport/443
Изменить владельца рабочей папки
sudo chown newuser:adm /var/cache/tomcat7
sudo chown -R newuser:newgroup /var/cache/tomcat7/Catalina
Сделайте файлы конфигурации доступными для чтения. Здесь у вас есть два варианта: либо добавьте нового пользователя в группу tomcat7:
sudo usermod -a -G tomcat7 newuser
...или измените владельца файлов конфигурации:
sudo chown -R :newgroup /var/lib/tomcat7/conf/*
Если у вас есть другие файлы, к которым обращаются ваши веб-приложения, например, файлы журналов, файлы конфигурации и т. д., то вам также необходимо изменить владельца этих файлов.
- Теперь все должно быть готово для повторного запуска сервиса с новым пользователем.
EDIT 2: После обновления до tomcat 8 и Ubuntu 18.04 возникла другая проблема при запуске tomcat от имени другого пользователя. В скрипте /etc/init.d/tomcat8
следующая строка, похоже, изменяет домашнюю папку пользователя tomcat, но результат не тот, что вам нужен, если вы используете другого пользователя.
usermod --home /var/lib/tomcat8 $TOMCAT8_USER > /dev/null 2>&1 || true
Удалив или закомментировав эту строку, вы можете избежать изменения домашней папки для нового пользователя tomcat.