Запустіть Tomcat7 як tomcat7 (або будь-який інший) користувач


10

Яким буде рекомендований спосіб забезпечити, щоб екземпляр Tomcat7 працював як tomcat7 (або будь-який інший) користувач?

Я думаю, що я можу змінити tomcat7-instance/bin/startup.shта tomcat7-instance/bin/shutdown.shдодати 'su tomcat7' вгорі.

У Tomcat6 я думаю, що це була змінна середовище TOMCAT6_USER.


Якщо ви просите про "безпечний шлях", швидше за все, це спровокує дебати. Тепер якщо ви запитаєте "як встановити іншого користувача для tomcat7?" що відповідає. BTW, tomcat починається з користувача tomcat, наскільки я пам’ятаю, якщо ви встановили
дебютний

Відповіді:


13

Найпоширеніший спосіб - встановити стандартний 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

TOMCAT7_USER і TOMCAT7_GROUP - це те, що я шукав. Спасибі
Адріан Бер

Я змінив TOMCAT7_USER в tomcat7-instance / bin / setenv.sh і запустив сервер. Але якщо я відображаю процес за допомогою ps, користувач не той, який вказаний у TOMCAT7_USER.
Адріан Бер

Чому б ви не змінили його безпосередньо в /etc/default/tomcat7?
Девід Левеск

Скажімо, у мене є два екземпляри користувачів Tomcat, і я хочу запустити їх як різних користувачів.
Адріан Бер

Це сценарій, з яким я не знайомий, але в цьому випадку я не думаю, що ви можете запустити Tomcat як службу, і наведена вище конфігурація не застосовується. Можливо, вам слід задати окреме питання з цього приводу.
Девід Левеск

11

РЕДАКТУЙТЕ: Будь ласка, читайте коментарі нижче! Це рішення може застосовуватися не у всіх ситуаціях.

Прийнята відповідь чудова, але оскільки я запускаю Tomcat 7 на Ubuntu 14.04, мені потрібно було зробити кілька додаткових речей, щоб все запустити:

  1. Перш ніж редагувати файл, вам потрібно зупинити службу tomcat /etc/default/tomcat7. Щойно ви зміните користувача та групу, більше не можна буде зупинити послугу за допомогою старого користувача.
  2. Змініть користувача та групу у файлі /etc/default/tomcat7

  3. Вам потрібно змінити право власності на папку /var/log/tomcat7та всі її файли. Зверніть увагу, що перевагу зберігати групу адміністраторів, щоб усі користувачі адміністратора могли читати журнали.

    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.


У вашій відповіді величезна проблема. Після наступного оновлення пакета tomcat7 (виправлення безпеки / виправлення) ваша установка буде порушена, оскільки apt знову встановить нову версію пакета tomcat7, використовуючи того ж користувача (tomcat7). Таким чином, ви не можете робити без нагляду оновлення, і вам не потрібно пам'ятати, що потрібно подавати після кожного оновлення.
користувач323094

Я цього не усвідомлював і наразі не маю жодного хорошого рішення для цього. Будь-які пропозиції, хтось?
stenix

У Tomcat9 такого файлу немає.
Стефан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.