Я создаю вызов CTF и хочу, чтобы у каждого участника был свой собственный контейнер Docker, чтобы они не мешали друг другу.Контейнер должен работать с CMD cron -f
как root , а у пользователя должна быть оболочка с user1 .
Я изменил оболочку по умолчанию, чтобы вместо нее запускать скрипт, изапустить команду docker, чтобы запустить оболочку в новом контейнере.Я уже следую этому уроку .Но я не помогаю мне найти способ запуска cron от имени root и оболочки с привилегированным пользователем в одном контейнере.
Я пытаюсь смешать команду, которую я мог видеть, но у моего скрипта все еще есть одна проблема: контейнер не удаляется, когда участник закрывает свое окно, содержащее терминал.
Вотскрипт, который запускается при инициализации SSH-соединения:
#!/bin/bash
trap '' 2
echo "Initiating connection..."
container=$(docker run -d --rm my_container:latest)
echo "Connection started!"
docker exec -it -u user1 $container '/bin/bash'
echo "Closing connection..."
docker stop $container >> /dev/null
Как мне решить эту задачу?Более того, я бы знал, есть ли другой случай, когда я забыл, где пользователь мог оставить свой сеанс без удаления контейнера.Или даже полностью избежать этого сценария.