GZCTF安装时数据库报错解决
GZCTF 通过 Docker 镜像的方式提供,你可以通过 docker-compose 的方式快速部署一个功能完善的 CTF 平台。我们在安装时,尤其是在一些版本下的系统会存在数据库配置问题。
:one: 这个主要是在docker-compose up -d时,GZCTF会将一部分数据(账户信息,题目信息)储存在本地,用永久化存储,而在其中psqlsql的容器中会将sql的配置信息(postgresql.conf)挂在到本地。
:two:而一些版本下的系统或者psqsql(高版本)启用 SCRAM-SHA-256 密码身份验证来来确保安全性,但是GZCTF的两个容器通信使用的md5的加密方式,导致密码传入psqsql容器后校验失败。
:three:因此需要修改本地和容器内的加密方式为md5加密即可。
:four:进入容器修改会遇到sudo命令等不存在问题,下更新源apt-get update即可。
- 修改postgresql.conf参数文件:password_encryption = md5
- 重新载入配置文件:pg_ctl reload -D $PGDATA 或SELECT pg_reload_conf();
- 查看参数配置是否修改成功:SHOW password_encryption;
- 重置用户密码:\password user_name
- 修改pg_hba.conf验证方法,然后reload即可:host all all 0.0.0.0/0 scram-sha-256改为host all all 0.0.0.0/0 md5 ##这里host 后面不一定是all all
- 同理本地修改即可
如果遇到docker容器内无法使用sudo命令
- 尝试以管理员方式进入:docker exec -u root -t -i id /bin/bash
- 使用–privileged=true进行赋权:docker run -it –privileged=true -u=root id /bin/bash