以下命令都通过普通用户创建,linux版本 centos7
作为远程服务器,ftp也是必不可少的,在此简单记录一下自己ftp的搭建和配置。
安装vsftp
sudo yum install vsftpd -y
确保成功安装vsftpd -v
启动vsftpd服务
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
如无意外,现在可以直接通过本机打开ftp了,我用的是 开源多平台的Filezilla ,默认端口会自动识别为21,此图为Filezilla匿名登录配置
毕竟匿名用户还有默认端口会导致一些不安全行为,所以再稍微配置一下
创建ftp用户
sudo adduser 你的ftp用户名 -d 路径 -s /sbin/nologin
sudo passwd 你的ftp用户名
由此创建一个匿名用户,只用于ftp登录访问特定的文件夹,不能用于登录ssh。并创建密码。
修改ftp监听端口
sudo vi /etc/vsftpd/vsftpd.conf
在ftp配置文件最后追加
listen_port= 其他端口
随后重启ftp服务
sudo systemctl restart vsftpd
防火墙添加新添加的端口
sudo firewall-cmd --zone=public --add-port=端口/tcp --permanent
重启防火墙
sudo firewall-cmd --reload
这样理论上已经可以使用新的匿名用户登录ftp了,但是在修改完端口后能成功连上ftp却一直报一个错误
最后添加ftp被动模式解决 :
pasv
再次修改ftp配置文件,追加
pasv_enable=YES
pasv_min_port=随机数
pasv_max_port=随机数
两个随机数是一个端口范围,只要是正确的端口且都大于1023就行。
随后添加此端口范围到防火墙中
sudo firewall-cmd --zone=public --add-port=随机数-随机数 --permanent
重启防火墙即可
其他配置
限制ftp用户只能访问特定的目录,不能查看父级目录
修改ftp配置文件,直接追加:
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
然后在vsftpd目录下新建 chroot_list
sudo vi /etc/vsftpd/chroot_list
在里面添加要限制的用户名,保存即可。
这里有点药注意的,如果想限制只能访问自身的目录,需要对用户的根目除去写的权限,不然连接的时候会错:
需要如下操作
sudo chmod a-w ftp的用户根目录
最后保存重启 vsftpd 服务便可正确连接服务器。