【软件部署】在docker环境部署vsftpd

张开发
2026/4/3 21:29:50 15 分钟阅读
【软件部署】在docker环境部署vsftpd
说明vsftp官网https://security.appspot.com/vsftpd.html配置文件说明https://security.appspot.com/vsftpd/vsftpd_conf.html注意因优化更新文件内容可能变化具体参考https://github.com/zhuyifeiRuichuang/work-script/tree/main/vsftp适用场景一个用户一个容器单独的数据卷完整隔离的环境。下载软件在官网下载你期望使用的版本放在当前目录创建文件DockerfileFROM ubuntu:24.04# 安装依赖RUNapt-getupdateapt-getinstall-y--no-install-recommends\gccmakelibc-dev libpam0g-devpasswdlibpam-pwdfile\rm-rf/var/lib/apt/lists/*# 复制并编译安装vsftpdCOPY vsftpd-*.tar.gz /tmp/ RUNcd/tmp\tar-zxfvsftpd-*.tar.gz\cdvsftpd-*\mkdir-p/usr/local/man/man8 /usr/local/man/man5\makemakeinstall\cpvsftpd.conf /etc/\cd/tmprm-rfvsftpd-*\apt-getpurge-ygccmakeapt-getautoremove-yapt-getclean# 修复1创建标准ftp用户 强制设置密码 RUNmkdir-p/usr/share/empty\mkdir-p/data/\userdelftp2/dev/null||true\useradd-r-d/data-s/usr/sbin/nologinftp\# 内置账户密码echoftp:Ftp123|chpasswd\chownftp:ftp /data/# 修复2Ubuntu专用PAM认证解决登录失败核心 RUNcat/etc/pam.d/vsftpdEOF auth required pam_unix.so account required pam_unix.so EOFRUNcat/etc/pam.d/ftpEOF auth required pam_unix.so account required pam_unix.so EOF# 修复3完整FTP配置 RUNsed-is/^anonymous_enableYES/anonymous_enableNO//etc/vsftpd.conf\sed-is/^#local_enableYES/local_enableYES//etc/vsftpd.conf\sed-is/^#write_enableYES/write_enableYES//etc/vsftpd.conf\sed-is/^#pam_service_namevsftpd/pam_service_namevsftpd//etc/vsftpd.conf\echochroot_local_userYES/etc/vsftpd.conf\echoallow_writeable_chrootYES/etc/vsftpd.conf\echoxferlog_file/var/log/vsftpd.log/etc/vsftpd.conf\echopasv_min_port40000/etc/vsftpd.conf\echopasv_max_port40010/etc/vsftpd.conf\echolistenYES/etc/vsftpd.conf\echoconnect_from_port_20YES/etc/vsftpd.conf# 日志初始化RUNtouch/var/log/vsftpd.logchmod644/var/log/vsftpd.log# 启动CMD[/bin/sh,-c,/usr/local/sbin/vsftpd /etc/vsftpd.conf tail -f /var/log/vsftpd.log]compose.yamlnetworks: vsftp-net: driver: bridge name: vsftp-net volumes: vsftp-data: name: vsftp-data services: vsftpd: build:.# image: zhuyifeiruichuang/vsftpd:3.0.5container_name: vsftpd-server networks: - vsftp-net volumes: - vsftp-data:/data ports: -20:20-21:21-40000-40010:40000-40010restart: always environment: -TZAsia/Shanghai访问测试本地测试cd/tmpecho111111test.txtftplocalhostftpFtp123 lcd /tmp put test.txls远程测试是将locahost改为容器所在宿主机或容器名称由访问者所在环境决定。

更多文章