mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-02-18 22:12:40 +00:00
48 lines
No EOL
2.8 KiB
Text
48 lines
No EOL
2.8 KiB
Text
# Запуск роутера Yggdrasil без root
|
||
|
||
Якось, на новому сервері Debian, було передвстановлено Yggdrasil з репозиторію. Оскільки сам я збираю роутер з сорсу і створюю для нього самопальний сервіс для root, тоді я випадково повалив собі конект давши права 0400 на файл конфігурації створений від рута.
|
||
|
||
Поліз розбиратись і помітив, що користувач там yggdrasil:
|
||
|
||
``` /usr/lib/systemd/system/yggdrasil.service
|
||
[Unit]
|
||
Description=yggdrasil
|
||
Wants=network-online.target
|
||
After=network-online.target
|
||
|
||
[Service]
|
||
User=yggdrasil
|
||
Group=yggdrasil
|
||
ProtectHome=true
|
||
ProtectSystem=strict
|
||
NoNewPrivileges=true
|
||
RuntimeDirectory=yggdrasil
|
||
ReadWritePaths=/var/run/yggdrasil /run/yggdrasil
|
||
SyslogIdentifier=yggdrasil
|
||
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
|
||
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
|
||
ExecStartPre=+-/sbin/modprobe tun
|
||
ExecStart=/usr/sbin/yggdrasil -useconffile /etc/yggdrasil/yggdrasil.conf
|
||
ExecReload=/bin/kill -HUP $MAINPID
|
||
Restart=always
|
||
TimeoutStopSec=5
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
```
|
||
=> https://github.com/yggdrasil-network/yggdrasil-go/blob/develop/contrib/systemd/yggdrasil.service.debian актуальний оригінал сервісу
|
||
|
||
По суті, користувач root - потрібен роутерові лише для створення інтерфейсу tun. І як бачимо, надання привілеїв CAP_NET_ADMIN і CAP_NET_BIND_SERVICE - цілком вирішує цю проблему, хоча й не без недоліків:
|
||
=> https://github.com/yggdrasil-network/yggdrasil-go/issues/881#issuecomment-1010040413
|
||
|
||
Для запобігання помилки прав доступа до розташування /var/run, також потрібно змінити стандартну адресу сокета, додавши згідно шляхів systemd теку yggdrasil:
|
||
|
||
``` /etc/yggdrasil/yggdrasil.conf
|
||
AdminListen: unix:///var/run/yggdrasil/yggdrasil.sock
|
||
```
|
||
=> https://github.com/yggdrasil-network/yggdrasil-go/issues/1285#issuecomment-3418828172 джерело
|
||
|
||
---
|
||
|
||
* Думаю зробити те само для Mycelium, бо мене тема пускання від рута давно параноїть і я просто вимикаю роутер, коли ним не користуюсь.
|
||
* Збирання програм від рута - це ще одна дурнувата звичка, через що (ймовірно) я колись вхопив невловимий малварь, який благополучно здох тільки разом з сервером, своєю смертю. |