一:首先购买树莓派,安装好硬件,系统,软件,更新镜像源,时区设置,静态IP,插好网线(详情见第一条博客)
二: 下载安装ftp服务器
1: sudo apt-get update //首先更新
2: sudo apt-get install vsftpd //其次安装
三: 修改VSFTP的配置文件 /etc/vsftpd.conf
1: sudo nano /etc/vsftpd.conf //进入VSFTP的配置文件
2://将配置文件修改为如下所示
listen = NO //以服务方式运行
anonymous_enable=YES //是否允许匿名帐号
local_enable=YES 是否允许本地帐号
write_enable=YES 是否允许使用任何可以修改文件系统的FTP的指令
local_umask=022 本用户的文件掩码
anon_upload_enable=YES是否允许匿名用户上传文件
anon_mkdir_write_enable=YES是否允许匿名用户创建新目录
dirmessage_enable=YES 是否显示欢迎信息
xferlog_enable=YES 开启日记功能
connect_from_port_20=YES 设定ftp服务数据端口
chown_uploads=YES是否允许修改上传文件的属主
chown_username=whoever如果允许,输入该属主的用户名
xferlog_file=/var/log/xferlog日志文件位置
xferlog_std_format=YES 使用标准的日志格式
idle_session_timeout=600空闲连接超时
data_connection_timeout=120数据传输超时
nopriv_user=ftpsecure当服务器运行于最底层时使用的用户名
async_abor_enable=YES是否允许使用\"async ABOR\"命令,一般不用,容易出问题
ascii_upload_enable=YES是否可用ASCII 模式上传。默认值为NO
ascii_download_enable=YES是否可用ASCII 模式下载。默认值为NO
ftpd_banner=Welcome to blah FTP service login时显示欢迎信息
deny_email_enable=YES如果匿名用户需要密码,那么使用banned_email_file里面的电子邮件地址的用户不能登录
banned_email_file=/etc/vsftpd/banned_emails禁止使用匿名用户登陆时作为密码的电子邮件地址
userlist_enable=YES 若启用此选项,userlist_deny选项才被启动
//关于将用户是否限制在主目录,见下表格
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
//即为外接硬盘挂载位置,也为数据存储位置
local_root=/mnt/data/pub 表示本地用户登录后的根目录
anon_root=/var/www/html 即匿名用户访问的主目录
//ftp默认主目录权限设置不对,报这个错误是因为/mnt/data设置权限为777,/mnt/data/pub设置 权限也为777。正确的权限设置是将/mnt/data权限设置为755,chmod 755 /mnt/data/后重启ftp服务就ok了
修改完后ctrl +o 保存,ctrl + x 退出
四:重新启动VSftp服务
sudo service vsftpd restart //重启命令
sudo systemctl restart vsftpd
sudo service vsftpd start //启动命令
sudo service vsftpd stop //停止命令
五: 挂载三星固态硬盘作为ftp大数据存储盘
1 查看挂载情况
sudo df -h
2 设置开机自动挂载固态硬盘到 data下
sudo nano /etc/fstab
/dev/sda1 /mnt/data ext4 rw,defaults 0 0
3 修改所属组合权限,注意:NTFS的格式的硬盘不能修改owner权限
sudo chown -R ftpUserName:ftpUserName /mnt/data/
#注意这里一定不能添加w权限,否则client登录的时候会被拒绝,这里坑了很久
sudo chmod 555 /mnt/data/
六: 安装UFW防火墙
1 安装UFW防火墙
sudo apt-get install ufw
2 开启防火墙
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
//记得输入Y,否则SSH会断开
sudo ufw default deny //开启了防火墙并随系统启动同时关闭所有外部对本机的访问(本机访问外部正常)
3 关闭防火墙
sudo ufw disable
4 查看防火墙状态
sudo ufw status
5 开启、关闭端口,添加规则
sudo ufw allow 22/tcp
//记得优先添加SSH允许的端口访问,否则下一次连接不上
sudo ufw allow 80/tcp 开放tcp协议80端口
sudo ufw allow 80 允许外部访问80端口
sudo ufw delete allow 80 禁止外部访问80 端口
sudo ufw allow 10000:11000/tcp 开放10000-11000端口,需指定协议(tcp/udp)
sudo ufw allow from 192.168.1.110 允许192.168.1.110的访问,不限端口、协议
ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 要拒绝所有的流量从TCP的10.0.0.0/8 到端口22的地址192.168.0.1
sudo ufw allow from 10.0.0.0/8 可以允许所有RFC1918网络(局域网/无线局域网的)访问这个主机(/8,/16,/12是一种网络分级)
sudo ufw allow from 172.16.0.0/12
sudo ufw allow from 192.168.0.0/16
七: 开启UFW防火墙后,除了将22端口开放后,20,21 端口也要记得开放
被动模式下(PASV)如果客户端依旧访问不到服务器,修改/etc/vsfptd.conf配置文件:
sudo nano etc/vsfptd.conf
1 connect_from_port_20=YES
新加:
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=20000
2 修改ufw防火墙:
ufw allow proto tcp from any to any port 10000:20000
3 重启防火墙 ufw reload
重启vsftpd服务 sudo systemctl restart vsftpd.service
内网实测下载速度如下:8M/S
八:新建专门的FTP登录用户
例如:新建名为 ftpName 的目录为/mnt/data下的用户
1,新建用户
sudo useradd -d /mnt/data -s /sbin/nologin ftpName
2 修改用户密码
sudo passwd ftpName
3. 确认FTP黑名单里无此用户名
sudo nano /etc/ftpuser
4.确认白名单里及时增添此用户名
sudo nano /etc/vsftpd.user_list
5. 禁锢FTP用户到自己主目录之下
即为设置步骤三中的chroot_local_user,chroot_list_enable, chroot_list_file的值和属性即可。
6. 设置权限和所属组,所属用户
sudo chown ftpName:ftpName /mnt/data
sudo chmod 555 /mnt/data
7. 如果使用此FTP用户名依旧无法登陆则考虑修改 /etx/shells 里面的值
系统某些服务在运行过程中,回去检查用户使用的shells,而这些shell查询就是借助/etc/shells这个文件
sudo nano /etc/shells
在最后一行添加 /sbin/nologin 如下图:存档,退出
最后重启vsftpd 服务器
这一步参考的博客如下:
新建的FTP用户无法登陆https://blog.csdn.net/weixin_44901564/article/details/108059263
九:开放外网访问
注册购买NAT,花生壳等内网穿透软件进行内网穿透,端口映射
Ok ,赶紧新创建一个FTP用户名,指定家目录和权限,并登陆享用吧!!!
以上是结合一些博主和自己实战经验所写,如有不足之处,望各位大佬和网友帮忙指正修改,谢谢大家。
参考博客文章如下:vsftpd 配置:chroot_local_user与chroot_list_enable详解https://blog.csdn.net/bluishglc/article/details/42398811 修改vsftpd的默认根目录https://blog.csdn.net/yifanSJ/article/details/72855484
安装vsftpd服务,ftp连接后无法展示目录,连接失败的问题https://blog.csdn.net/chemiu0350/article/details/100969868vsftp 开启ufw 后 FTP访问不到https://blog.51cto.com/wujianwei/2069037