标签:linu 虚拟机 无法 -name 打开 Superviso ESS docker gif
制作ctf题目前置条件:CentOS7,需要安装有docker服务
制作test1压缩包下的题目1:
(注意:寻找镜像时,不找无run启动命令的镜像)
无特殊要求,开始制作镜像。
首先根据题目要求从docker hub上寻找对应的镜像,该题目需要php镜像,需要php运行服务器,一般而言使用apache。
如图所示镜像是根据寻找找到的可用镜像
如图所示,通过docker pull命令下载镜像
docker run -tid -p XX:XX 镜像名:版本号
(前边的XX代表虚拟机的端口,后面的XX代表容器的端口,容器的端口是通过刚刚找到的)
分三步进行,第一步:将题目文件上传到linux服务器中
第二步:找到docker容器进入的目录位置:
docker exec -it 容器id /bin/bash
(默认进入容器内部的命令为/bin/bash或者是/bin/sh)
然后pwd查看当前路径
第三步:将linux文件上传到docker容器对应的目录中:
docker cp 文件名 容器id:容器目录
ip地址加端口(linux服务器ip+启动命令设置的linux虚拟机端口)
发现文件乱码如何解决
分以下几步:
第一步,进入docker容器内部,删除docker 容器文件
第二步,删除宿主机上的文件
第三步,创建一个新文件,直接复制题目内容到新文件中,退出保存
第四步:将文件上传至docker 容器内部(和第8条第三步一样)
docker cp 文件名 容器id:容器目录
第五步:浏览器访问
docker commit 容器id 镜像名称
docker save -o XX.tar 镜像名:版本号
(XX为打包出来的文件名)
题目制作成功,tar包可用
下次使用时:将tar文件上传至服务器,加载镜像即可
docker load --input XXX.tar
docker run -tid --name {container_name} -p {host_port}:{container_port} {image_id}/{image_name}:{tag}
docker exec -it {container_id} /bin/bash
ps -a
nginx和php-fpm的主进程(master process)为root用户权限;下方的nginx权限为nginx用户的权限,php-fpm权限为root用户的权限。当php进程的权限为root用户时,做题的人可以通过该权限直接对题目本身(容器)进行随意破坏,这样不行,需要修改php普通用户的权限。
cd /usr/local/etc
ls
vi php-fpm.conf
将文件内容修改为以下图片所示,修改user=root为user=www-data,修改listen.owner=root为listen.owner=www-data。
ps -a查看权限,配置完成之后,查看配置并未生效,需要对php重启使配置生效
supervisorctl status查看docker容器当前运行的应用
supervisorctl stop php 停止
supervisorctl start php 开启
效果等同于重启
supervisorctl restart php 重启
再次通过ps -a查看当前进程权限
用户权限已经改好了
在通过docker exec -it {container_id} /bin/bash进入容器内部的默认路径下执行
ls
mkdir upload
ls -al
新建的upload文件夹的权限为root:root(权限为root:root时,普通用户无法对文件夹进行写入,没有root权限,需要修改为普通用户也能访问)
chown [-R] 账号名称:用户组名称 文件或目录
chown www-data:www-data upload/
ls -al 查看权限的时候能看到upload文件夹权限用户以及用户组都变成了www-data www-data
用户上传文件夹权限已经修改完毕,可以让用户上传文件。
docker commit {container_id} {image_name}:{tag}
docker save -o XX.tar {image_name}:{tag}
下次使用时:将tar文件上传至服务器,加载镜像即可
docker load --input XXX.tar
标签:linu 虚拟机 无法 -name 打开 Superviso ESS docker gif
原文地址:https://www.cnblogs.com/longchengruoxi/p/11743631.html