本帖最后由 SANGFOR_HZ 于 2022-10-21 22:30 编辑
FTP详解及Linux系统下Vsftp搭建FTP的应用实例
一、FTP基本简介
FTP是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一。尽管World Wide Web(WWW)已经替代了FTP的大多数功能,FTP仍然是通过Internet把文件从客户机复制到服务器上的一种途径。FTP客户机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录。原来的FTP软件多是命令行操作,有了像CUTEFTP这样的图形界面软件,使用FTP传输变得方便易学。主要使用它进行“上载”。即向服务器传输文件。由于FTP协议的传输速度比较快,我们在制作诸如“软件下载”这类网站时喜欢用FTP来实现,同时我们这种服务面向大众,不需要身份认证,即“匿名FTP服务器”。
二、FTP工作原理
简单地说,支持ftp协议的服务器就是ftp服务器,ftp协议的连接方式有两种,一种是命令连接,一种是数据连接,而ftp的数据连接方式也有两种,一种是主动模式,一种是被动模式 主动模式的工作原理: (1) 客户端对服务器发起请求,连接的是服务器的21号端口,客户端的端口号N是大于1024的随机端口 (2) 服务器的21号端口给予客户端响应数据流 (3) 服务器打开20号端口去连接客户端的N+1的端口 (4) 客户端给予响应,数据开始传输 主动模式工作原理图如下所示:
被动模式的工作原理: (1) 客户端对服务器发起的请求连接是服务器的21号端口,客户端的端口号N是大于1024的随机端口 (2) 服务器的21号端口给予客户端响应 (3) 服务器打开一个大于1024的随机端口,客户端使用N+1端口号去连接服务器打开的端口 (4) 服务器给予响应,于是数据开始传输 被动模式工作原理图如图下所示:
需要注意的是:客户端如何连接服务器端的这个随机端口的呢?在命令连接阶段,服务器会传输172.16.2.1.113.26的字符串过去,前四个标识的是服务器的IP地址,而随机端口是通过后面两个字符计算得出的,计算法则为第一个乘以256加上第二个数,即客户端连接服务器端的这个随机端口号是113*256+26
三、FTP常用命令
cd 切换远程目录 lcd 切换本地目录 dir 查看远程目录 !Dir 查看本地的目录 put 上传一个文件 mput 多个文件上传 get 下载一个文件 mget 下载多个文件 mkdir 创建目录 rmdir 删除目录 ? 帮助
四、vsftpd搭建FTP的应用案例
1、环境:Centos7.8 64位
2、需求: ftp server 使用vsftpd 新增硬盘 分区 /mnt/part1 public {匿名账号根} 公共文档存放处 home/账号1...................账号n 节省磁盘空间 本地账户分配空间配额为10M 下载速率本地账号 1M/S 匿名 100K/S
3、案例实施 Step1:添加磁盘(如有多余的磁盘不需再添加) [root@huangzhong ~]# fdisk -l 查看添加后的磁盘标志
[root@huangzhong ~]# mkfs -t ext3 /dev/sdb1 格式化磁盘 [root@huangzhong ~]# mkdir /mnt/partion //创建挂载点 [root@huangzhong ~]# mount /dev/sdb1 /mnt/partion/ 挂载磁盘 [root@huangzhong ~]# cd /mnt/partion/ [root@huangzhong partion]# mkdir public //创建匿名登录的家目录 [root@huangzhong partion]# mkdir home //创建用户的家目录 //改变创建用户时的默认家目录改为/mnt/partion/home [root@huangzhong partion]# useradd -D -b /mnt/partion/home/ //创建一个用户,登录查看家目录 [root@huangzhong partion]# useradd user1 //创建账号 [root@huangzhong partion]# passwd user1 //设置密码 [root@huangzhong partion]# su - user1 //用user1登录 [user1@huangzhong ~]$ pwd /mnt/partion/home//user1
Step2:实现磁盘配额 [root@huangzhong partion]# vim /etc/fstab
[root@huangzhong ~]# umount /mnt/partion/ //卸载挂载 [root@huangzhong ~]# mount -a //使用参数挂载 [root@huangzhong ~]# mount //查看是否挂载 [root@huangzhong ~]# yum install quota //安装磁盘配额工具 [root@huangzhong ~]# setenforce 0 //关闭selinux [root@huangzhong ~]# service iptables stop [root@huangzhong ~]# quotacheck -augvc [root@huangzhong ~]# cd /mnt/partion/ [root@huangzhong partion]# ll -rw-------. 1 root root 7168 Jul 4 03:37 aquota.user //给user1分配空间配额 [root@huangzhong partion]# edquota -u user1 //把user1拷贝给user2和user3 [root@huangzhong partion]# edquota -p user1 user2 [root@huangzhong partion]# edquota -p user1 user3 //启动磁盘配额 [root@huangzhong partion]# quotaon /dev/sdb1 //加入开机启动 [root@huangzhong partion]# echo "quotaon /dev/sb1" >>/etc/rc.d/rc.local
Step3:安装vsftpd [root@huangzhong ~]# cd /media/cdrom/Packages/ [root@huangzhong Packages]# ll |grep -i vsftpd -r--r--r--. 2 root root 154584 Feb 19 2013 vsftpd-2.2.2-11.el6_3.1.x86_64.rpm [root@huangzhong Packages]# yum install vsftpd-2.2.2-11.el6_3.1.x86_64.rpm //修改vsftpd的配置文件 Step4:安装超级守护进程 [root@huangzhong tmp]# yum install xinetd [root@huangzhong xinetd.d]# cp telnet vsftpd [root@huangzhong xinetd.d]# vim vsftpd [root@huangzhong xinetd.d]# service xinetd start //在匿名的家目录下创建文件 [root@huangzhong ~]# cd /mnt/partion/public/ [root@huangzhong public]# touch f1.p //在用户user1的家目录下创建文件 [root@huangzhong partion]# cd home/user1/ [root@huangzhong user1]# touch f1.user1
4、案例测试 //创建一个8M的文件和一个3M的文件 [root@huangzhong ~]# dd if=/dev/zero of=/tmp/f2.user1 bs=1M count=8 [root@huangzhong ~]# dd if=/dev/zero of=/tmp/f3.user1 bs=1M count=3 //user1登录进行上传测试 [root@huangzhong ~]# ftp 192.168.1.21 [root@huangzhong tmp]# dd if=/dev/zero of=/tmp/f4.user1 bs=1M count=1 //把f4.user1移到匿名的家目录下改名为f4.p [root@huangzhong tmp]# cp f4.user1 /mnt/partion/public/f4.p //使用匿名登录下载相同文件速率 [root@huangzhong tmp]# mv f4.user1 /mnt/partion/home/user1 //使用user1登录
|