记录一下搭建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
就好了