Как использовать правила udev для управления / dev / xxx при работе в контейнере

Во-первых, я хочу сказать, что я действительно не хочу изменять / dev / random 's доступ к продукту. Это всего лишь тест для проверки, когда systemd работает в moby, правила udev в /etc/udev/rules.d/xxxx поведение

Вопрос 1: почему только при использовании –priviledged контейнера допустимы правила управления udev контейнера в файле /etc/udev/rules.d/xxx?

какая система власти нужна, если systemd необходимо использовать udev для управления / dev / xxx с помощью /etc/udev/rules.d/xxx?

Question2: когда я запускаю использование контейнера –priviledged, почему перезагрузка контейнера изменит доступ к phycalhost'у / dev / xxx и использует правила /host //ru/ru/rux физического хоста? Я думаю, что это не разумно

Распространение

redhat 7.2

В случае отчета об ошибке: шаги по воспроизведению проблемы

запустите контейнерA без каких-либо привилегий

[root@physicalhost /home/ahao.mah] #docker run -d --net host reg.docker.xxxxx.com/mybase/centos7u2:latest 36cc8f6759294b2b2900b313c4f978737b11671b7ab2cc185e69fba3f6a9d10c [root@containerA /home/ahao.mah] #docker exec -it 36cc8f6759294b2b2900b313c4f978737b11671b7ab2cc185e69fba3f6a9d10c bash 

изменить правила udev в containerA:

 [root@containerA /] #cat /etc/udev/rules.d/70-test_random.rules KERNEL=="random", GROUP="root", MODE="0665", OPTIONS="last_rule" 

перезапустите этот контейнерA:

 [root@physicalhost /home/ahao.mah] #docker restart 36cc8f675929 36cc8f675929 

containerA / dev / random все еще 0666, но не 0665

 [root@containerA /] #ll /dev/random crw-rw-rw- 1 root root 1, 8 Aug 8 11:34 /dev/random 

В данный момент я не знаю, почему правила /etc/udev/rules.d/xxx недействительны в контейнере no -priviledges?

запустить контейнерB с –priviledge

 [root@physicalhost /home/ahao.mah] #docker run -d --net host --privileged reg.docker.xxxxx.com/mybase/centos7u2:latest [root@containerB /home/ahao.mah] #docker exec -it 1853437e8d2ea7018475b2328a10f1625da8b0c667941d69d912598325dc830d bash 

Теперь доступ к контейнеру / dev / random по умолчанию также является 0666, но я хочу изменить / dev / random / random доступ к контейнеру в 0660, тогда мне нужно использовать правила udev в /etc/udev/rules.d/xxx

 [root@containerB /] #ll /dev/random crw-rw-rw- 1 root root 1, 8 Aug 8 11:40 /dev/random [root@containerB /] #vim /etc/udev/rules.d/70-test_random.rules KERNEL=="random", GROUP="root", MODE="0660", OPTIONS="last_rule" 

Теперь доступ к физическому хосту / dev / random по умолчанию – 0666, но я изменяю физический / dev / произвольный доступ к 0777

 [root@physicalhost /] #cat /etc/udev/rules.d/70-test_random.rules #KERNEL=="random", GROUP="root", MODE="0777", OPTIONS="last_rule" [root@physicalhost /] #ll /dev/random #crw-rw-rw- 1 root root 1, 8 Aug 8 11:40 /dev/random 

перезапустить контейнерB:

 [root@physicalhost /home/ahao.mah] #docker restart 1853437e8d2e 1853437e8d2e 

оба варианта containerB / dev / random и physicalhost / dev / access изменены!

 [root@containerB /] #ll /dev/random crw-rw---- 1 root root 1, 8 Aug 8 11:41 /dev/random [root@physicalhost /home/ahao.mah] #ll /dev/random crwxrwxrwx 1 root root 1, 8 Aug 8 11:43 /dev/random 

Мои взгляды:

  1. Я думаю, что это связано с тем, что система работает в докере
  2. при работе с –priviledges, systemd, запущенный в докере, не должен изменять доступ к физическому хосту / dev / xxx с помощью /etc/udev/rules.d/xxx
  3. при запуске без полномочий – systemd, работающий в docker, должен изменить доступ к контейнеру / dev / xxx с помощью /etc/udev/rules.d/xxx

  • Как отладить правило udev (в /etc/udev/rules.d/...)
  • Правила udev не запускают скрипт при добавлении USB-устройства
  • Правило UDEV, когда USB-накопитель отключен
  • Правила udev, похоже, не работают
  • Разрешение отклонено: запись правила udev в тестовый файл в /etc/udev/rules.d/
  • Как перезагрузить правила udev без перезагрузки?
  • Могу ли я маскировать ядро ​​uevent?
  • udev не создает постоянную символическую ссылку с использованием ID_PATH
  • One Solution collect form web for “Как использовать правила udev для управления / dev / xxx при работе в контейнере”

    Я получил свое решение, когда в контейнере, созданном –privileged, этот контейнер имеет / sys rw-доступ, а service systemd-udev-trigger.serivce может быть исключен. это означает, что udevadm может запускать uevent to / sys / devices / / / uevent и физический хост также может получить этот uevent, а затем физическое использование /etc/udev/rules.d/xxx

    точкой запуска udevadm является указание ядру отправлять события для всех присутствующих устройств. Это делается путем записи в / sys / devices / / / uevent. Для этого требуется, чтобы sysfs был установлен read-write on / sys.

    Interesting Posts

    Круговой журнал в linux

    Столбцы виртуальных рабочих столов в Openbox

    Перенаправление заголовка для файла хостов обновлений

    Я случайно переместил каталог в «..». Куда он пошел?

    Используете VirtualBox или VMWare функцию Intel VT-d?

    Как перенаправить веб-трафик на конкретный хост с помощью iptables

    FreeNAS 9.2: установите пакеты FreeBSD

    yum install http://www.example.com/package.rpm vpm rpm -ivh http://www.example.com/package.rpm

    Не удается загрузить с usb

    Физические тома, логические тома, суперблоки исчезли … как загрузиться?

    Скрипт для Ping IP и создание журнала, показывающего дату / время любого сбоя, раз более 500 мс, а traceroute – отказ

    Можно ли выполнить команду через ssh с пользователем nologin?

    контролировать и смотреть несколько систем непрерывно

    Как я могу разделить каталоги на разные разделы при установке OpenSUSE Leap (и других дистрибутивов Linux)?

    Регистрируется ли Linux при запуске процесса и назначается ему PID? Где я могу найти этот журнал?

    Linux и Unix - лучшая ОС в мире.