记录一下搭建FTP服务器踩过的坑
关于WIN的设置 
控制面板——启用或关闭Windows功能——Internet Information Services——FTP服务(勾选)、Web管理工具——IIS管理控制台(勾选)
以及TFTP客户端一并勾选上
 
控制面板——网络和Internet——Internet选项——高级——使用被动FTP
 
控制面板——系统和安全——Windows Defender防火墙——允许应用通过Windows……——更改设置 勾选FTP服务器
 
Linux安装配置FTP服务 使用命令yum install vsftpd安装FTP服务,配置文件在/etc/vsftpd/vsftpd.conf中
其他文件ftpusers是禁止文登录FTP服务的用户的黑名单(默认开启)
user_list用户可以登录的白名单,黑名单白名单的启用与关闭需要在配置文件中修改
FTP的常用命令 1 2 3 4 5 6 service vsftpd start		开启FTP服务 service vsftpd status		查看状态 service vsftpd stop			停止服务 service vsftpd restart		重启服务 systemctl restart vsftpd	重启服务 chkconfig vsftpd on			开机自启 
在配置文件更新后记得要重启一下服务
vsftpdc.conf的配置 以下是一些重要的配置
1 2 3 4 5 6 7 8 9 10 write_enable=YES		允许用户修改文件内容 local_enable=YES		允许本地用户可以登录 anoymous_enable=NO		禁止匿名用户的呢牢固 no_anon_password=YES	匿名用户不需要密码 anon_root=/example/directrory/	匿名登录的目录 local_root=/var/ftp/pub	设置登录后的目录(可自定义) 根目录的限制 chroot_list_enable=YES chroot_local_user=YES chroot_list_file=/etc/vsftp/chroot_list	设置此文件中的用户可以切换目录 
具体配置(来自Linux 在 linux 中搭建 FTP 服务 - 云+社区 - 腾讯云 (tencent.com) 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #  禁止匿名用户anonymous登录 anonymous_enable=NO #  允许本地用户登录 local_enable=YES #  让登录的用户有写权限(上传,删除) write_enable=YES #  默认umask  local_umask=022 #  把传输记录的日志保存到/var/log/vsftpd.log xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=NO #  允许ASCII模式上传 ascii_upload_enable=YES  #  允许ASCII模式下载 ascii_download_enable=YES #  使用20号端口传输数据 connect_from_port_20=YES #  欢迎标语 ftpd_banner=Welcome to use my test ftp server. #  接下来的三条配置很重要 #  chroot_local_user设置了YES,那么所有的用户默认将被chroot , #  也就用户目录被限制在了自己的home下,无法向上改变目录。 #  chroot_list_enable设置了YES,即让chroot 用户列表有效。 #  ★超重要:如果chroot_local_user设置了YES,那么chroot_list_file #  设置的文件里,是不被chroot 的用户(可以向上改变目录) #  ★超重要:如果chroot_local_user设置了NO,那么chroot_list_file #  设置的文件里,是被chroot 的用户(无法向上改变目录) chroot_list_enable=YES #  touch  /etc/vsftpd/chroot_list 新建chroot_list_file=/etc/vsftpd/chroot_list use_localtime=YES #  以standalone模式在ipv4上运行 listen=YES #  PAM认证服务名,这里默认是vsftpd,在安装vsftpd的时候已经创建了这个pam文件, #  在/etc/pam.d/vsftpd,根据这个pam文件里的设置,/etc/vsftpd/ftpusers #  文件里的用户将禁止登录ftp服务器,比如root这样敏感的用户,所以你要禁止别的用户 #  登录的时候,也可以把该用户追加到/etc/vsftpd/ftpusers里。 pam_service_name=vsftpd 
创建FTP用户 1 2 3 useradd test	创建用户 passwd test		修改密码 chown test:test /你的ftp目录(一般在/var/ftp/pub 自定义另算) 
创建用户后就可以使用此用户账号和密码登录到FTP服务了(不建议开匿名登录)
在文件管理的条中输入ftp://虚拟机的地址就可以直接连接到FTP的根目录文件了(前提是在win的设置第二条中勾选FTP的预览)
关于一些重要的坑 1. 防火墙 FTP服务连接一定要设置好Linux的防火墙,否则会被拦下,我直接简单粗暴的直接关掉
service firewalld stop(Linux 7)
service  iptables stop(Linux 6)
 
2. SELinux 在关闭防火墙后连接倒是能连上了,但是当我尝试上传文件时……直接弹 SELinux 的警报了,网上有说要 setenforce 0关闭防火墙的,然而我发现关掉防火墙更加连接不上……
实际上只要关掉SELinux对FTP的保护就好了
1 2 3 4 5 getsebool -a|grep ftp	找到SELinux关于ftp服务的保护 #  这两条一定要开启才能够上传 setsebool -P ftpd_full_access 1 setsebool -P ftpd_anon_write 1 #  如果找不到的话找相近或者类似看起来像的 
3. 配置文件 配置文件有两个小坑,一个是chroot_list,一个是权限的检查问题
在配置好文件后由于被设置了根目录保护但是有特定用户可以访问其他目录,也就是chroot_local_user=YES后而没有创建白名单文件,这个只需要touch chroot_list就好了
另一个是因为vsftpd增强了安全检查,如果用户被限定在了主目录下,用户就不能再有写的权限了,如果检查还有写权限则会报错。
而这个只需要在配置文件中添加allow_writeable_chroot=YES就好了