Запустите Tomcat7 от имени пользователя tomcat7 (или любого другого)

Запустите Tomcat7 от имени пользователя tomcat7 (или любого другого)

Какой рекомендуемый способ гарантировать, что экземпляр 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, мне нужно было сделать некоторые дополнительные вещи, чтобы все заработало:

  1. Вам необходимо остановить службу tomcat перед редактированием файла /etc/default/tomcat7. После смены пользователя и группы остановить службу, используя старого пользователя, больше не получится.
  2. Измените пользователя и группу в файле/etc/default/tomcat7

  3. Вам нужно изменить владельца папки /var/log/tomcat7и всех ее файлов. Обратите внимание, что сохранение группы adm является преимуществом, так как все пользователи adm могут читать журналы.

    sudo chown -R newuser:adm /var/log/tomcat7

  4. Изменить владельца папки/var/lib/tomcat7/webapps

    sudo chown -R newuser:newgroup /var/lib/tomcat7/webapps

  5. При работе на порту 80/443 в Ubuntu 14.04 необходимо изменить владельца файлов authbind:

    sudo chown newuser /etc/authbind/byport/80

    sudo chown newuser /etc/authbind/byport/443

  6. Изменить владельца рабочей папки

    sudo chown newuser:adm /var/cache/tomcat7

    sudo chown -R newuser:newgroup /var/cache/tomcat7/Catalina

  7. Сделайте файлы конфигурации доступными для чтения. Здесь у вас есть два варианта: либо добавьте нового пользователя в группу tomcat7:

    sudo usermod -a -G tomcat7 newuser

    ...или измените владельца файлов конфигурации:

    sudo chown -R :newgroup /var/lib/tomcat7/conf/*

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

  9. Теперь все должно быть готово для повторного запуска сервиса с новым пользователем.

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.

Связанный контент