LINUX.ORG.RU
решено ФорумAdmin

ptrace в Docker-контейнере с Astra Linux

 , ,


0

2

Всем привет! Создал образ для работы с pvs-studio. Для нужного мне режима работы анализатора нужен ptrace, однако в образе он у меня по-умолчанию отключен. На хосте ptrace включается при помощи astra-safepolicy командой astra-ptrace-lock disable, но в образе astra-safepolicy нету, и команды такой он не знает. А на попытку отредактировать данный параметр напрямую выдаёт:

root@39aae85ed1c6:/etc/selinux#  sysctl kernel.yama.ptrace_scope=0
sysctl: setting key "kernel.yama.ptrace_scope": Файловая система доступна только для чтения

Кто-то знает ещё спобобы включить ptrace в Астре?

UPD: проблему решил. Есть два способа:

  1. Запустить контейнер с –pid=host;
  2. Скопировать ptrace_scope в образ через Докерфайл.

Подробнее см. ниже



Последнее исправление: snake_0 (всего исправлений: 1)

Ты хочешь включить ptrace изнутри контейнера?

Ты можешь прокинуть соответствующий файл из proc с хоста и дальше включать вручную через sysctl. Какой именно файл кидать — это надо в документации на астру смотреть.

UPD: будет ли работать pvs в таком режиме, никто не гарантирует.

Aceler ★★★★★
()
Последнее исправление: Aceler (всего исправлений: 1)
Ответ на: комментарий от mx__

Да так и работает. Включить опцию надо в хостовом ядре, а прикладной софт использует либо системные вызовы хостового ядра, либо файловый интерфейс. Во втором случае надо соответствующие файлы прокидывать внутрь контейнера через bind mount.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

Благодарю за помощь. С монтированием хоть и не получилось, но смог найти решение через docker run --pid=host .... А на хосте уже включил ptrace.

Что касательно монтирования, то при вводе команды docker run -it -v /proc/sys/kernel/yama:/proc/sys/kernel/yama:ro test:pvs /bin/bash выдавало:

docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/proc/sys/kernel/yama" to rootfs at "/proc/sys/kernel/yama": "/var/lib/docker/overlay2/55b94a1256b9e9c2bf721a2bde4f6c351d2f1387e012caafa3429803ca8de92f/merged/proc/sys/kernel/yama" cannot be mounted because it is inside /proc: unknown.
ERRO[0000] error waiting for container: context canceled
snake_0
() автор топика
Ответ на: комментарий от Aceler

Кстати, нашёл ещё одно решение. Можно взять правильный /proc/sys/kernel/yama/ptrace_scope (который разрешает трассировку), поместить в контекст создания образа и через Dockerfile и COPY просто его заменить. Тоже работает

snake_0
() автор топика
Ответ на: комментарий от Andrey_Karpov_2020

А вот у меня вопрос, у чела написано:

docker run -it -v /proc/sys/kernel/yama:/proc/sys/kernel/yama:ro test:pvs /bin/bash

А что в Aстра такое старое ядро без cgroup? Или в docker это не монтруют? (я юзаю podman)

mx__ ★★★★★
()