@lionsitroen

Какие права нужны для создания сетевых интерфейсов linux?

Есть приложение в контейнере 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 на хосте, не совсем понятно какие и на какие файлы.

Заранее спасибо за помощь.
  • Вопрос задан
  • 168 просмотров
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
создать интерфейсы приложение не может т.к. не хватает привилегий.

А если внимательно прочитать лог, то можно увидеть sudo: not found. Т.е. скрипт рассчитывает выполнить привилегированную часть с помощью sudo, но его (sudo) нет.

Полагаю, необходимо дать права пользователю 1000:1000 на хосте, не совсем понятно какие и на какие файлы.

Вообще для манипуляций с сетевыми ресурсами нужна capability CAP_NET_ADMIN, её отсутствие нельзя восполнить никакими разрешениями на файлах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы