ftp服务器搭建参考b站视频
第1坑,开放端口后仍然无法连接:
这里不仅需要在防火墙打开20和21端口,还需要打开被动访问所使用的端口,也就是在配置文件vsftpd.conf中指定的被动访问接收端口。
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40080
如果是云服务器,还需要在平台上将平台上的防火墙的这些端口也打开。
第2坑,500 OOPS: vsftpd: refusing to run with writable root inside chroot()
这里是因为ftp的主目录的权限问题,需要改成755(必须)且所有人为root。
第3坑,命令行、网页端、fileZilla都能打开,但是无法使用文件夹以路径的方式访问。
这里参考了许多文章,大多给出了一个治标不治本的方法,就是把IE浏览器Internet选项中的FTP被动模式访问关掉。这样只能保证我自己的主机没有问题,不过我要做的是在另一个公用基因组浏览器washU上使用,并不能控制那边的Internet选项。
从图中可以看到227返回的是一个内网IP,说明ftp被动模式返回的IP有问题。可以通过添加以下代码修改:
pasv_addr_resolve=YES
pasv_address=公网IP
不过即使这样,访问时扔报227错误,且IP地址变为0,0,0,0。这是因为vsftpd的被动模式返回ip的时候必须使用IPV4,所以在.conf文件中需要监听IPV4而不能监听IPV6。设置listen=YES,再把listen_ipv6=YES注释掉即可。
最终配置:
anonymous_enable=YES /允许匿名用户登录
local_enable=NO /禁止本地用户登录
write_enable=YES /允许写入操作,否则不能上传文件
anon_umask=022 /匿名用户上传文件权限
anon_upload_enable=YES /允许匿名用户上传文件,需要配合write_enable=yes
anon_other_write_enable=YES /控制匿名用户对文件和文件夹的删除和重命名(自己添加,没有该配置)
anon_mkdir_write_enable=YES 允许匿名用户创建目录
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service. /ftp工具连接成功提示
chroot_local_user=YES /所有用户均不能切换到上级目录
chroot_list_enable=NO /是否启动限制用户的名单。YES为启用,NO禁用。默认禁用
listen=YES
pam_service_name=vsftpd
userlist_enable=NO / /etc/vsftpd/user_list文件不生效
allow_writeable_chroot=YES /不添加此项,文件无法上传。报错:550 Permission denied。新版本vsftpd加入了安全需求,切根不允许写,要添加这个配置并设置为YES才可以
anon_root=/usr/local/ftpdir /匿名用户的根目录
no_anon_password=YES /匿名用户不要密码
ftp_username=ftpuser /匿名登录后的使用者
pasv_enable=YES /设置被动模式
pasv_min_port=40000
pasv_max_port=40080
pasv_addr_resolve=YES
pasv_address=公网IP
参考文章:
- Linux中Centos7系统搭建FTP服务详细过程
- vsftpd 报错refusing to run with writable root inside chroot