найкраща практика для дозволу доступу для користувачів apache tomcat


22

У мене є вікно Linux, яким діляться різні розробники. Вони хочуть розгорнути свої файли війни в apache tomcat, який знаходиться в спільному місці (/ opt / tomcat).

Оскільки вони не мають доступу до sudo, я повинен змінити дозвіл на папку для каталогу tomcat.

структура каталогів під /opt/tomcat-

bin/

conf/

lib/

logs/

temp/

webapps/

work/

Які найкращі практики у наведеній вище ситуації - Найбільш підходящий дозвіл доступу для користувача? На даний момент я змінив дозвіл на 777 на веб-сайти та журнали.

Спасибі

Відповіді:


32

Я роблю це так:

Ми ставимо користувача tomcat як власника папки tomcat:

# chown -R tomcat:tomcat /opt/tomcat

Користувачі не можуть змінювати конфігурацію tomcat:

# chmod -R g+r /opt/tomcat/conf

Користувачі можуть змінювати інші папки:

# chmod -R g+w /opt/tomcat/logs
# chmod -R g+w /opt/tomcat/temp
# chmod -R g+w /opt/tomcat/webapps
# chmod -R g+w /opt/tomcat/work

Активуйте клейкий біт для нових файлів, щоб зберегти дозволи:

# chmod -R g+s /opt/tomcat/conf
# chmod -R g+s /opt/tomcat/logs
# chmod -R g+s /opt/tomcat/temp
# chmod -R g+s /opt/tomcat/webapps
# chmod -R g+s /opt/tomcat/work

Нарешті, ми додаємо групу tomcat, яку ми хочемо, щоб користувачі, які можуть використовувати tomcat:

# usermod -a -G tomcat MIUSER

4
Якщо зробити без тега -a, ви додасте користувача до групи tomcat, але видаліть MIUSER з усіх інших груп, до яких вони належать (це означає, що більше немає групи судо). Мені просто довелося швидко діяти, щоб відновити мої групи в основному обліковому записі на одному з моїх серверів, витягнувши їх зі старого сеансу, де я все ще проводив ці групи. Слово попередження для інших користувачів, які читають цю відповідь.
Аксорен

Я додав варіант до відповіді. Спасибі
вступник

Як Tomcat починати користуватися tomcat? Шахта запускається як дімон, і з цього часу вона працює як корінь.
Стефан

1
Привіт Стефане, в Ubuntu Tomcat виконує з користувачем tomcat, і він знаходиться у файлі / etc / default / tomcat8 зі змінними TOMCAT8_USER та TOMCAT8_GROUP. В інших Linux я не знаю.
вступник

Не +sвстановлено ідентифікатор користувача / групи? Сторінка людини говорить, що +tце трохи липкий.
bmaupin

13

Non-Tomcat settingsРозділ HOWTO безпеки Tomcat надає корисну інформацію по цій темі. Дивіться тут:

Tomcat не слід запускати під користувачем root. Створіть спеціального користувача для процесу Tomcat та надайте цьому користувачу мінімально необхідні дозволи для операційної системи. Наприклад, не повинно бути можливим дистанційно входити в систему за допомогою користувача Tomcat.

Дозволи на файли також повинні бути належним чином обмежені. Взявши приклади Tomcat в ASF (наприклад, коли автоматичне розгортання вимкнено, а веб-додатки розгорнуті як вибуховані каталоги), стандартна конфігурація полягає у тому, щоб усі файли Tomcat, що належать root, з групою Tomcat, і в той час як власник має права читання / запису , група лише читала, а світ не має дозволів. Виняток становлять журнали, темп та робоча директорія, які належать користувачу Tomcat, а не root . Це означає, що навіть якщо зловмисник компрометує процес Tomcat, вони не можуть змінити конфігурацію Tomcat, розгорнути нові веб-програми або змінити існуючі веб-додатки. Процес Tomcat працює з umask 007 для підтримки цих дозволів.


Цікаво, чи може бути описаний підхід застосований не тільки в Tomcat, але й з іншими службами (база даних, зворотний проксі тощо). Ви вважаєте, що це можливо / розумно?
Паоло

1

Потрібно дотримуватися принципу найменшої пільги . Сервер (напевно www-data, але вам потрібно перевірити) повинен мати можливість читати більшість файлів (скажімо всі) та записувати лише в журнали. Веб-розробникам дозволяється писати там, де їм потрібно. Встановіть клейкий біт у каталогах, щоб його міг видалити лише власник файлу.

На практиці вам потрібно створити групу (наприклад webdev) та додати до неї всіх розробників та сервера ( usermod -aG webdev <user>або usermod -A webdev <user>залежно від вашого смаку Linux). chownвсі файли та каталог для користувача веб-сервера, chmod всі каталоги до 500 і всі файли до 400 (за винятком випадків, binколи виконуваних файлів також повинно бути 500).

Надайте дозволу на запис /opt/tomcatгрупі (це було б 570) і встановіть клейкий біт, щоб вони могли видаляти лише ті файли, якими вони володіють (chmod 1570). Надати серверу дозвіл на запис у журнали та читати дозволи для розробників (0740 для папки, 0640 для файлів, клейкий біт, мабуть, не потрібен, і ніколи не надавати його файлу, а лише папкам, оскільки він має інше значення (виконати з дозволів власника, коли файл виконується).

Тоді вам потрібно надати дозволи на запис (1570) webdevна деякі каталоги. Тут вам знадобляться деякі пробні помилки, і це може залежати від програми. Ці папки мають бути 1570, тоді як деякі інші - 0500).

Розробникам необхідно надати групі доступ для читання своїх файлів, щоб сервер міг їх читати (це 640), а також виконувати в каталогах (це 750).


1

Я думаю, що прийнята відповідь @ intropedro - це хороша відповідь. Варто зазначити, що використання інсталятора пакету може врятувати багато головних болів - принаймні для Tomcat 7 в Ubuntu apt-get install tomcat7виробляється більш "стандартний" набір установочних каталогів:

  • /etc/tomcat7 для файлів конфігурації,
  • /var/lib/tomcat7 для основних бібліотек та
  • /usr/share/tomcat7 для спільних ресурсів.

Усі дозволи встановлені правильно з принципом найменшого привілею, таким чином, щоб додати користувачів до групи tomcat7достатньо, щоб дозволити розгортання. Далі сервер tomcat налаштовується як служба, яку можна запускати та зупиняти як інші (наприклад, sudo service tomcat startабо альтернативно /etc/init.d/tomcat start). Tomcat запускається при перезавантаженні автоматично, і є команда «перезапустити». Я впевнений, що для користувачів RHEL / CentOS є еквівалентний пакет. (І так, є локальний інсталятор для локальних установок OSX).

Якщо у вас виникають проблеми, у /usr/share/binвикликах, configtest.shякі звітуються , є приємна утиліта , якщо є дозволи або інші помилки. Зауважте, є відкрита помилка, яка пропонує додавати деякі символьні посилання .

У нас все ще працює Ubuntu trusty(14.04); для тих, хто працює більш новіших версій, я вважаю, що є Tomcat 8 apt-get repo.

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