Разрешения Linux, когда файлы записываются / читаются разными процессами

355
user1156544

У меня есть веб-приложение, развернутое через Tomcat, которое позволяет загружать файлы в папке files. Эти файлы загружены Tomcat с владельцем tomcat:tomcatи разрешениями 640. Мне нужно вести группу, tomcatпотому что другим пользователям это нужно для целей администрирования.

Что касается загрузки, у меня есть Nginx, который предоставляет файлы для пользователей.

Проблема в том, что Nginx не может получить доступ к загруженным файлам, потому что он использует пользователя www-data:www-data.

  • Я не могу добавить www-dataв группу tomcatпо соображениям безопасности.
  • Я не могу заменить tomeeгруппу www-data, потому что мне нужна tomeeгруппа, и я не могу позволить tomee создавать ВСЕ файлы в www-dataгруппе (например, tomee будет создавать журналы в папке tomee:www-data, что нежелательно - это может иметь только загрузка в любом случае)
  • Я не могу позволить othersиметь какие-либо разрешения на файлы, из соображений безопасности. В любом случае я не могу изменить 640маску Tomcat по умолчанию, потому что (плохой дизайн Tomcat?) Это повлияет на КАЖДЫЙ файл, который создает Tomcat.
  • Я мог бы использовать, chmod g+sно это, похоже, не влияет на файлы рекурсивно (Tomcat создает также каталоги, в которые он затем загружает файл)

Как я могу решить эту проблему?

0

1 ответ на вопрос

0
user1156544

Я думаю, что я решил это, но нужно больше тестировать, прежде чем принимать решение.

  • sudo apt install acl (на основе Ubuntu)
  • sudo chown tomcat:www-data files
  • sudo chmod g+s files
  • sudo setfacl -Rm d:g:www-data:r files

Похожие вопросы