18

У меня есть коробка Linux, которой поделились разные разработчики. Они хотят развернуть свои военные файлы в Apache Tomcat, который находится в общей папке (/opt/tomcat).

Так как они не имеют доступа sudo, я должен изменить разрешение папки для каталога tomcat.

Структура каталогов в /opt/tomcat -

bin/

conf/

lib/

logs/

temp/

webapps/

work/

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

Спасибо

4 ответа4

27

Я делаю это так:

Мы ставим пользователя 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

Активируйте sticky-bit для новых файлов, сохраняя права доступа:

# 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
12

Раздел Non-Tomcat settings руководства по безопасности Tomcat содержит полезную информацию по этой теме. Посмотреть здесь:

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

Права доступа к файлам также должны быть соответствующим образом ограничены. На примере экземпляров Tomcat в ASF (где автоматическое развертывание отключено, а веб-приложения развертываются как разнесенные каталоги), стандартная конфигурация состоит в том, чтобы все файлы Tomcat принадлежали пользователю root с группой Tomcat, а владелец имеет права на чтение и запись. Группа только прочитала, и мир не имеет разрешений.Исключением являются журналы, временные и рабочие каталоги, которые принадлежат пользователю Tomcat, а не root. Это означает, что даже если злоумышленник скомпрометирует процесс Tomcat, он не сможет изменить конфигурацию Tomcat, развернуть новые веб-приложения или изменить существующие веб-приложения. Процесс Tomcat запускается с umask 007 для поддержки этих разрешений.

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 запускается при перезагрузке автоматически, и есть команда "перезапустить". Я уверен, что есть эквивалентный пакет yum для пользователей RHEL/CentOS. (И да, есть домашний установщик для локальных установок OSX).

Если у вас возникли проблемы, в /usr/share/bin есть хорошая утилита configtest.sh которая сообщает о наличии разрешений или других ошибках. Обратите внимание, есть открытая ошибка, которая предлагает добавить несколько символических ссылок.

Мы все еще работаем с Ubuntu trusty (14.04); для тех, кто работает с более свежими версиями, я считаю, что есть репозиторий apt-get Tomcat 8.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .