Update server-storage-setup.md to clarify file and directory permissions
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:
@@ -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)
|
||||
делает уже само приложение.
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user