diff --git a/docs/server-storage-setup.md b/docs/server-storage-setup.md index 0e1f5bf..d890268 100644 --- a/docs/server-storage-setup.md +++ b/docs/server-storage-setup.md @@ -145,8 +145,26 @@ SFTP/rsync, наследовали группу `telewave`, а не вашу л sudo chmod 2775 /srv/telewave/media/inbox /srv/telewave/media/manual ``` -Забрать файл из каталога приложение сможет в любом случае: удаление зависит от прав на **каталог** -(владелец — 1654), а не на сам файл, поэтому чужой umask у ваших загрузок импорту не мешает. +Забрать **файл** из этих каталогов приложение сможет в любом случае: удаление зависит от прав на +каталог (владелец — 1654), а не на сам файл, поэтому чужой umask у ваших загрузок импорту не мешает. + +А вот **вложенные папки** — мешают, и одним `chmod` это не закрыть. В `manual/` обычно кладут не +файлы, а каталог раздачи целиком. Владельцем такого каталога станете вы, режим ему выставит umask +клиента (у SFTP это обычно 755), и группе достанется `r-x` — приложение не сможет ни вынести файл +в `originals/` при импорте, ни подчистить спутники и опустевший каталог. Права на новое внутри +задаются дефолтными ACL — они действуют независимо от того, каким клиентом и с каким umask файлы +приехали: + +```bash +sudo apt install -y acl +sudo setfacl -R -m g:telewave:rwx -m d:g:telewave:rwx \ + /srv/telewave/media/inbox /srv/telewave/media/manual +``` + +Проверить — `getfacl /srv/telewave/media/manual`: нужны строки `group:telewave:rwx` и +`default:group:telewave:rwx`. Без ACL альтернатива только клиентская (принудительные права `775` +на загрузку в WinSCP, umask 002 у rsync) — держится на настройке каждого, кто заливает файлы, +и ломается при первой же загрузке другим инструментом. **Обновление существующей установки.** Если хранилище было заведено раньше, когда контейнер работал под root, — те же команды и есть вся миграция: выполните их на остановленном контейнере @@ -212,15 +230,18 @@ docker compose exec app id # ожидается uid=1654 gid=1654 docker compose exec app sh -c 'touch /media/.wtest && ls -l /media/.wtest && rm /media/.wtest' ``` -И что вы сами можете класть файлы вручную (под своим пользователем, не через sudo): +И что вы сами можете класть файлы вручную (под своим пользователем, не через sudo), а приложение — +убирать созданное вами, в том числе внутри вложенных каталогов: ```bash touch /srv/telewave/media/inbox/.wtest && rm /srv/telewave/media/inbox/.wtest +mkdir -p /srv/telewave/media/manual/.wtest && docker compose exec app sh -c 'rmdir /media/manual/.wtest' ``` -Обе команды должны отработать без ошибок доступа. `Permission denied` в первой — не сделан +Все команды должны отработать без ошибок доступа. `Permission denied` в первой — не сделан `chown -R 1654:1654` из шага 5; во второй — вы не в группе `telewave` либо не перелогинились после -`usermod`. На этом подготовка хоста завершена — дальнейшее (создание `MediaAsset`, нарезка ffmpeg) +`usermod` (в SFTP-клиенте — не переподключили сессию); в третьей — не выставлены дефолтные ACL, +и приложение не достаёт файлы из ваших подкаталогов. На этом подготовка хоста завершена — дальнейшее (создание `MediaAsset`, нарезка ffmpeg) делает уже само приложение. ---