一,vsftpd的安装
1.为了方便后续的配置建议用root登录。或者切换到root用户。
2.检查是否安装vsftpd。
[root@localhost ~]# vsftpd -v
如果没有安装使用yum安装。
[root@localhost ~]# yum -y install vsftpd
3.安装完成后,查看位置
[root@localhost ~]# whereis vsftpdvsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz
4.启动VSFTP服务
[root@localhost ~]# systemctl start vsftpd.service
5.查看是否启动成功
[root@localhost ~]# netstat -npal|grep vsftpd
或者通过查询是vsftpd服务是否存在systemctl status vsftpd.service
如果vsftpd启动失败,可能由以下原因导致(本人启动失败原因):
21端口占用:ftp默认启动端口号是21。当端口被占用时无法启动。
解决办法:
```cnetstat -anp |grep 21 //查看21端口的占用情况
```如果被占用,查看占用此端口号的进程PID```clsof -i :21
```
释放端口:```c
kill -9 4110 //4110为进程ID
```
至此端口已解除占用。
6.关闭SELinux限制,添加防火墙白名单
①设置关闭SELinux对ftp的限制
[root@localhost ~]# getsebool -a | grep ftp
ftp_home_dir --> on
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> on
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
[root@localhost ~]# setsebool -P ftpd_full_access on
②将ftp加入防火墙白名单(防火墙已关闭可以忽略此处)
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
查看防火墙状态:firewall-cmd --list-all
二、修改配置参数
1.建立用户和指定目录
useradd -d /home/ftpbus ftpuser //ftpuser是用户名,ftpbus 是该用户指定目录
passwd ftpuser //给用户设置密码
开启ftpbus权限:chmod 777 ftpuser
2.修改vsftpd.conf配置文件:
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
修改一下几个参数:
#不允许匿名访问
anonymous_enable=NO
#将用户限制在为其配置的主目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#添加以下内容-其中ftpbus为可访问的目录
local_root=/home/ftpbus
userlist_enable=YES这个选项如果是YES,那/etc/vsftpd/user_list中的用户将被禁止访问ftp。如果是NO,则只有user_list里面的用户才能访问ftp。
3.新建chroot_list文件
在/etc/vsftpd下新建chroot_list文件,在文件中添加ftpuser用户,使其只允许访问指定目录。
vim chroot_list
写入ftpuser
三、重启以及连接
重启命令:
systemctl restart vsftpd.service
访问:
在浏览器中输入:ftp://ip地址。我这里使用的事阿里云的测试服务器,一直访问不到连接超时,后经过各种查找,才发现是测试服务器的21端口没有在安全组中设置导致的。如何设置阿里云服务器安全组:https://blog.csdn.net/lzc2644481789/article/details/108210351
设置完成后,再访问就会出现输入用户名密码的弹框。输入上面配置的账号密码即可。
其他问题:
在弹框输入账号密码过程中一直出现,弹框不消失,一直让输入账号密码。考虑是账号密码输入错误。但由于浏览器不会报错也不给提示,大家可以通过cmd命令连接ftp,这样更加方便定位问题所在。使用方式如下:
1.打开cmd
2.输入ftp
3.输入 open ip地址
4.cmd提示输入用户和密码
5.常见提示错误对应原因:
-
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
在/etc/vsftpd/vsftpd.conf添加配置。
allow_writeable_chroot=YES # 如果启用了限定用户在其主目录下需要添加这个配置。 -
530 Login incorrect.登录失败。用户密码错误请检查。