环境
System Version: Centos7
安装
1.安装vsftpd:
sudo yum install vsftpd
2.启动vsftpd:
systemctl start vsftpd # 开启vsftpd
systemctl enable vsftpd # 自启vsftpd
3.运行以下命令查看FTP服务监听的端口:
netstat -antup | grep ftp
4.查看FTP服务是否启动,可以看到监听的端口号为21:
此时,vsftpd默认已开启匿名访问功能,您无需输入用户名密码即可登录FTP服务器,但没有修改或上传文件的权限。
配置
在用户配置中有两种模式, 并且在同一个服务中只能配置一种。
匿名模式
顾名思义,就是任何人都可以登陆的模式
1.修改配置文件vsftpd.conf
, 开启匿名上传权限:
jsed -i 's/#anon_upload_enable=YES/anon_upload_enable=YES/' /etc/vsftpd/vsftpd.conf
2.更改/var/ftp/pub
目录的权限, 添加写权限:
chmod o+w /var/ftp/pub
3.重启服务:
systemctl restart vsftpd.service
systemctl status vsftpd.service
这时,可以在浏览器的地址栏输入服务器的ftp://ipaddress:port,会出现如下界面,说明配置成功:
本地模式
该模式只能由拥有用户名和密码的所有人登陆
1.在这里可以为FTP服务创建一个专门的用户, 当然直接使用root用户配置也是可以的, 但是不推荐:
adduser vsftpd
passwd vsftpd # 注意密码
2.创建访问目录:
mkdir /var/ftp/vsftpd0
3.把创建的访问目录的用户属更改为vsftpd用户:
chown -R vsftpd:vsftpd /var/ftp/vsftpd0
4.修改vsftpd.conf
配置文件:
主动模式传送数据时是“服务器”连接到“客户端”的端口(客户端开启数据端口);
被动模式传送数据是“客户端”连接到“服务器”的端口(服务端开启数据端口);
主动模式需要客户端必须开放端口给FTP服务端,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难;
被动模式只需要服务器端开放端口给客户端连接就行了,如果服务端在防火墙内,也需要做端口映射才行。
- 配置FTP为主动模式:
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets
sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录
sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单
sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录
echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf
echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录
- 配置FTP为被动模式:
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets
sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录
sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单
sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录
echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf
echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录
echo "pasv_enable=YES" >> /etc/vsftpd/vsftpd.conf #开启被动模式
echo "pasv_address=<FTP服务器公网IP地址>" >> /etc/vsftpd/vsftpd.conf #本教程中为ECS服务器弹性IP
echo "pasv_min_port=20" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最小值
echo "pasv_max_port=21" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最大值
5.在/etc/vsftpd
目录下创建chroot_list文件,使得该文件中的用户可以访问其他目录:
vim /etc/vsftpd/chroot_list # 进入文件后输入用户名称即可
6.重启服务:
systemctl restart vsftpd.service
7.同样,在浏览器地址栏输入ftp://ipaddress:port,可以看到:
在这里输入前面创建的用户名和密码,便可以登陆FTP服务器。