Есть
приложение в контейнере Docker, которое на хосте (Debian 11) создает сетевые интерфейсы. Сейчас контейнер работает с правами root и проблем нет. В целях безопасности необходимо ограничить права. Для этого контейнер запускается с правами заранее созданного непривилегированного пользователя:
docker run -d \
--name=$ENV_APPNAME \
-e WG_HOST=10.77.41.12 \
-e WG_PORT=51820 \
-e PASSWORD='s,n,r-n-r' \
-e WG_PERSISTENT_KEEPALIVE=30 \
-v $APPFOLDER/appdata:/etc/wireguard \
-p 51820:51820/udp \
-p 51821:51821/tcp \
-u 1000:1000 \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--sysctl="net.ipv4.ip_forward=1" \
--restart unless-stopped \
$ENV_IMAGENAME
Разумеется, создать интерфейсы приложение не может:
$ wg-quick up wg0
Error: Command failed: wg-quick up wg0
/usr/bin/wg-quick: line 82: exec: sudo: not found
at ChildProcess.exithandler (child_process.js:383:12)
at ChildProcess.emit (events.js:400:28)
at maybeClose (internal/child_process.js:1058:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:293:5) {
killed: false,
code: 127,
signal: null,
cmd: 'wg-quick up wg0'
т.к. не хватает привилегий. Полагаю, необходимо дать права пользователю 1000:1000 на хосте, не совсем понятно какие и на какие файлы.
Заранее спасибо за помощь.