Day1-基于ECS的FTP-Vsftpd服务

环境

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:
Day1-基于ECS的FTP-Vsftpd服务
此时,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,会出现如下界面,说明配置成功:
Day1-基于ECS的FTP-Vsftpd服务

本地模式

该模式只能由拥有用户名和密码的所有人登陆

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,可以看到:
Day1-基于ECS的FTP-Vsftpd服务
在这里输入前面创建的用户名和密码,便可以登陆FTP服务器。

上一篇:hadoop常用服务管理命令


下一篇:无法初始化SFTP协议。主机是SFTP服务器吗