CentOS7下docker部署vsftpd服务

CentOS7下docker部署vsftpd服务

1. 安装docker(略)
2. 创建目录
mkdir -p /data/ftp/files
mkdir -p /data/ftp/conf

3. 启动vsftpd服务:
 注意:主动模式和被动模式的区别在于,主动模式下,ftp采用的是20端口传送数据,而被动模式下,ftp采用的是大于1024的随机端口。所以被动模式下,必要关闭防火墙;
(1)主动模式对FTP服务器的管理有利,因为FTP服务器只需要开启21端口的“准入”和20端口的“准出”即可,但这种模式对客户端的管理不利,因为FTP服务器20端口连接客户端的数据端口时,
    有可能被客户端的防火墙拦截掉。
(2)被动模式对FTP客户端的管理有利,因为客户端的命令端口和数据端口都是“准出”,windows防火墙对于“准出”一般是不拦截的,所以客户端不需要任何多余的配置就可以连接FTP服务器了;
    但对服务器端的管理不利。因为客户端数据端口连到FTP服务器的数据端口P时,很有可能被服务器端的防火墙阻塞掉。


被动模式根据并发在服务器开放小范围端口就行21100-21110,我选择使用被动模式:

被动模式:
docker run -d --name vsftpd \
--restart=always \
-p 21:21 -p 21100-21110:21100-21110 \
-e FTP_USER=ftpuser -e FTP_PASS=pass4ftp \
-e PASV_ADDRESS=192.168.51.165 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
-v /data/ftp/files:/home/vsftpd \
-e TZ="Asia/Shanghai" \
fauria/vsftpd

主动模式:
docker run -d --name vsftpd \
--restart=always \
-p 20:20 -p 21:21 \
-e FTP_USER=ftpuser -e FTP_PASS=pass4ftp \
-e PASV_ADDRESS=192.168.51.165 \
-v /data/ftp/files:/home/vsftpd \
-e TZ="Asia/Shanghai" \
fauria/vsftpd

示例:
docker run -d --name vsftpd \
--restart=always \
--cpuset-cpus="0,1" \
-m 1g --memory-swap -1 \
-p 20:20 -p 21:21 -p 21100-21110:21100-21110 \
-e FTP_USER=ftpuser -e FTP_PASS=pass4ftp \
-e PASV_ADDRESS=192.168.51.165 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
-v /data/ftp/files:/home/vsftpd \
-v /data/ftp/conf/vsftpd.conf:/etc/vsftpd/vsftpd.conf \
-e TZ="Asia/Shanghai" \
fauria/vsftpd

我解释一下我的启动命令:
-d                                                             #后台启动
--restart=always                                            #开机启动
--cpuset-cpus="0,1"                                            #cpu只是用0,1核
-m 1g --memory-swap -1                                         #内存1g 不限制交换内存使用,反正我系统swap为0
-p 20:20                                                    #ftp主动模式,数据端口
-p 21:21                                                    #ftp监听端口
-p 21100-21110:21100-21110                                     #pasv端口,就是被动端口范围,配合配置文件进行设定就是这两个参数的范围:PASV_MIN_PORT=21100  PASV_MAX_PORT=21104
-e FTP_USER=ftpuser -e FTP_PASS=pass4ftp                    #用户/密码
-e PASV_ADDRESS=47.107.43.3                                    #这个参数一定要设为公网,因为我的ftp服务器做了nat映射!!!
-v /data/ftpdata/ftpfile:/home/vsftpd                        #映射用户家目录
-v /data/ftp/conf/vsftpd.conf:/etc/vsftpd/vsftpd.conf        #映射配置文件
fauria/vsftpd                                                #镜像名称

镜像来自docker官网:hub.docker.com
可以查看里面的说明,有启动方法介绍。

4. 添加新用户

docker exec -i -t vsftpd bash
mkdir /home/vsftpd/dev
echo -e "dev\ndev" >> /etc/vsftpd/virtual_users.txt    #账户:dev 密码:dev
/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
exit
docker restart vsftpd

5. vsftpd配置文件
cat vsftpd.conf

# Run in the foreground to keep the container running:
background=NO

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO

# Uncomment this to allow local users to log in.
local_enable=YES

## Enable virtual users
guest_enable=YES

## Virtual users will use the same permissions as anonymous
virtual_use_local_privs=YES

# Uncomment this to enable any form of FTP write command.
write_enable=YES

## PAM file name
pam_service_name=vsftpd_virtual

## Home Directory for virtual users
user_sub_token=$USER
local_root=/home/vsftpd/$USER

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_local_user=YES           #所有用户都被限制在其主目录下,可以配合chroot_list_enable=YES 指定用户列表chroot_list_file 不受限制

# Workaround chroot check.
# See https://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/
# and http://serverfault.com/questions/362619/why-is-the-chroot-local-user-of-vsftpd-insecure
#allow_writeable_chroot=YES
allow_writeable_chroot=YES      #允许主目录有写的权限

## Hide ids from user
hide_ids=YES

## Enable logging
xferlog_enable=YES
xferlog_file=/var/log/vsftpd/vsftpd.log

## Enable active mode
port_enable=YES
connect_from_port_20=YES
ftp_data_port=8041

## Disable seccomp filter sanboxing
pasv_address=47.107.43.3
pasv_max_port=21104
pasv_min_port=21100
pasv_addr_resolve=NO
pasv_enable=YES
file_open_mode=0666
local_umask=077
xferlog_std_format=NO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值