UMask= в systemd: права создаваемых службой файлов
Задаёт маску прав для файлов и каталогов, создаваемых процессами службы. Значение по умолчанию — 0022: файлы получают права 0644, каталоги 0755.
Что делает
Маску меняют в двух случаях. Первый — нужно закрыть файлы от чужих глаз: UMask=0077 даст права 0600 и 0700, доступ только владельцу. Второй — нужно дать доступ группе: UMask=0007 даёт 0660 и 0770, что удобно для обмена через общую группу.
Маска действует только на файлы, создаваемые самой программой. Права каталогов службы задаются отдельными параметрами вида StateDirectoryMode=.
Где ставится. В секции [Service].
Значения
| Значение | Что происходит |
|---|---|
0022 | по умолчанию: файлы 0644, каталоги 0755. |
0077 | только владельцу: файлы 0600, каталоги 0700. |
0007 | владельцу и группе: файлы 0660, каталоги 0770. |
По умолчанию: 0022
Пример
Служба, создающая файлы с данными пользователей.
[Service]
User=app
UMask=0077
StateDirectory=myapp
StateDirectoryMode=0700
Маска и режим каталога заданы согласованно: и каталог, и файлы внутри будут доступны только пользователю службы.
Типичные ошибки
Маска не влияет на права уже существующих файлов: она применяется только при создании.
Права каталогов службы задаются отдельными параметрами, а не маской.
Слишком закрытая маска ломает обмен файлами между службами: тогда нужна общая группа и UMask=0007.
Связанные ошибки
- Permission denied в журнале службыОтказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
- nginx 403 Forbidden и Permission denied на файлы сайтаnginx отдаёт 403: нет прав на файлы сайта, закрыт каталог по пути, мешает SELinux или AppArmor, нет индексного файла.
Рядом стоящие параметры
Источники
- systemd.exec(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)