Update server-storage-setup.md to clarify file and directory permissions
ci / build-backend (push) Successful in 3m19s
ci / build-frontend (push) Successful in 40s
ci / tests (push) Successful in 1m53s
ci / sonar (push) Successful in 5m59s

Enhanced the documentation on file retrieval and deletion permissions within the application, emphasizing the importance of directory permissions over file permissions. Added instructions for setting default ACLs to ensure proper access for the `telewave` group, and included examples for verifying ACL settings. Updated the section on manual file handling to reflect the need for correct permissions in nested directories, ensuring users can manage files effectively without access issues.
This commit is contained in:
Leonid Pershin
2026-07-27 03:31:43 +03:00
parent be6947af06
commit 8841059070
+26 -5
View File
@@ -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)
делает уже само приложение.
---