阿里云ECS七天进阶训练营-搭建ftp篇
第一天搭建ftp服务器,使用vsftp软件
ftp(文件传输协议)一般用于文件的传输,由两部分组成:服务端与客户端。客户端可以通过ftp协议将网页或程序传到web服务器上,格式:ftp://ip addres
服务器拥有两个端口:20(传输数据)与21(控制信息),是否用20作为传输数据的端口由传输模式有关,但并不是只有这两个端口来传输控制,有时可能采用其他的随机端口,这需要客户端与服务端协商
vsftp分为主动模式与被动模式(传输模式上的差别)
当处于主动模式时,客户端连接服务器端的21端口,发送用户名密码,服务器接收到信息后通过20端口与客户端连接
当处于被动模式时,客户端连接到服务器端的21端口,发送用户名密码,服务器端会随机开放一个1024以上的端口,告诉客户端,让它连接
不论主动模式还是被动模式,都是用21端口发送指令,只是传输数据通道的区别。
支持匿名模式与本地用户模式(管理文件上的差别)
匿名模式:所有人都可以访问
本地用户模式:只有允许的用户才可以上传下载
1.安装vsftp
yum install vsftpd -y

输出此单词说明安装 成功
2.修改vsftp配置文件
vim /etc/vsftpd/vsftpd.conf
按 i 键进入编辑模式,将匿名上传权限 anon_upload_enable=YES 的注释解开

3.更改/var/ftp/pub目录权限,使ftp用户拥有写权限
chmod o+w /var/ftp/pub/
4.重启vsftp服务,设置开机自启动
systemctl restart vsftpd.service
systemctl enable vsftpd.service
5.添加ftp用户,设置密码。注意需要设置此用户没有登录服务器的权限,要不然有被登录服务器的危险
adduser ftptest
passwd ftptest
usermod -s /sbin/nologin ftptest
6.创建一个供ftp用户使用的目录,并将拥有者设置为此用户
mkdir /var/ftp/test
chown -R ftptest:ftptest /var/ftp/test
7.设置主动或被动模式
主动模式
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 #设置本地用户登录后所在的目录
被动模式
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 #设置被动模式下,建立数据传输可使用的端口范围的最大值
8.在/etc/vsftpd目录下创建chroot_list文件,并在文件中写入例外用户名单
#使用vim命令编辑chroot_list文件,添加例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。
vim /etc/vsftpd/chroot_list
说明: 没有例外用户时,也必须创建chroot_list文件,内容可为空。
9.最后再重启下服务就完成了
systemctl restart vsftpd.service
10.最终结果


浙公网安备 33010602011771号