Я думаю, что я решил это, но нужно больше тестировать, прежде чем принимать решение.
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
У меня есть веб-приложение, развернутое через 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 создает также каталоги, в которые он затем загружает файл)Как я могу решить эту проблему?
Я думаю, что я решил это, но нужно больше тестировать, прежде чем принимать решение.
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