diff --git a/post/zapusk-routera-yggdrasil-bez-root.md b/post/zapusk-routera-yggdrasil-bez-root.md new file mode 100644 index 0000000..1f13cf8 --- /dev/null +++ b/post/zapusk-routera-yggdrasil-bez-root.md @@ -0,0 +1,48 @@ +# Запуск роутера 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, бо мене тема пускання від рута давно параноїть і я просто вимикаю роутер, коли ним не користуюсь._ + +_P.S. збирання програм від рута - це ще одна дурнувата звичка, через що (ймовірно) я колись вхопив невловимий малварь, який благополучно здох тільки разом з сервером, своєю смертю._ \ No newline at end of file