SocketUser=
[Socket]
SocketUser=, SocketGroup=, SocketMode= для unix-сокетов
Задают владельца, группу и права файла unix-сокета, который создаёт systemd. Через них выдают доступ другим службам — обычно веб-серверу.
Что делает
Типичная задача: приложение слушает unix-сокет, а веб-сервер должен в него писать. Решение — общая группа и права 0660. Расширять права до 0666 не нужно: это открывает сокет всем процессам машины.
Параметры действуют только для unix-сокетов. Для сетевых портов права не имеют смысла, и systemd их игнорирует.
Где ставится. В секции [Socket].
Значения
| Значение | Что происходит |
|---|---|
SocketUser=app | владелец файла сокета. |
SocketGroup=www-data | группа: через неё даётся доступ веб-серверу. |
SocketMode=0660 | права: чтение и запись владельцу и группе. |
RemoveOnStop=yes | удалять файл сокета при остановке. |
Пример
Сокет приложения, доступный веб-серверу.
[Socket]
ListenStream=/run/myapp/app.sock
SocketUser=app
SocketGroup=www-data
SocketMode=0660
RemoveOnStop=yes
Типичные ошибки
Несуществующий пользователь или группа дают код 235/CHOWN при запуске сокета.
Права 0666 открывают сокет всем процессам машины: используйте группу.
Для сетевых портов эти параметры бессмысленны и только запутывают читателя unit-файла.
Связанные ошибки
- status=235/CHOWN в systemdКод 235/CHOWN: не удалось изменить владельца сокета. Код относится только к unit-файлам сокетов.
- Permission denied в журнале службыОтказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
- nginx 502 Bad Gateway: connect() failed к приложениюnginx работает, а приложение недоступно: connect() failed, connection refused, no such file or directory для сокета. Разбор 502.
Рядом стоящие параметры
Где важен на практике
Источники
- systemd.socket(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)