阿里云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

安装ftp输出

输出此单词说明安装 成功

 
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.最终结果

posted @ 2020-09-23 22:30  大梦方觉寺  阅读(216)  评论(0)    收藏  举报