РЕДАКТИРОВАТЬ: Пожалуйста, прочитайте комментарии ниже! Это решение не может быть применимо ко всем ситуациям.
Принятый ответ великолепен, но поскольку я запускаю 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/*
Если у вас есть другие файлы, к которым обращаются ваши веб-приложения, такие как файлы конфигурации файлов журналов и т. Д., Вам также необходимо изменить владельца этих файлов.
- Теперь все должно быть готово снова запустить сервис с новым пользователем.
РЕДАКТИРОВАТЬ 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.