我正在创建CTF挑战赛,我希望每个参与者都有自己的Docker容器,以防止他们相互干扰。容器应以 root 的身份运行CMD cron -f
,并且用户应具有 user1 的外壳。
我将默认外壳程序改为运行脚本,然后启动docker命令以在新容器中启动外壳程序。我已经关注this tutorial。但是我没有帮助我找到如何以root身份启动cron并在同一容器中以低特权用户身份启动shell。
我尝试混合使用我可以看到的命令,但是我的脚本仍然存在一个问题:当参与者关闭其包含终端的窗口时,不会删除容器。
这是启动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
如何完成此任务?而且,我想知道是否还有另一种情况我忘记了用户可以在不删除容器的情况下离开会话的地方。甚至完全转义该脚本。