详解vsftpd搭建ftp和ftps

一、FTP的作用和工作原理
FTP(FileTransfer Protocol)是文件传输协议的简称
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

推荐阅读:

Ubuntu 13.04 安装 LAMP\vsftpd\Webmin\phpMyAdmin 服务及设置

RHEL6平台下SeLinux和vsftpd的匿名上传的简单案例

Linux系统vsftpd源码安装

vsftpd的安全配置案例分析

二、安装ftp软件包:
配置好yum源后通过yum –y install vsftpd进行安装
[root@stu2~]# rpm -ql vsftpd    //查看软件包生成了那些文件
列出几个较为重要的
12345678910 /etc/logrotate.d/vsftpd      //配置日志回滚的文件
/etc/pam.d/vsftpd                  //定义vsftpd是如何认证用户的,默认情况vsftpd支持使用匿名用户和本地用户
/etc/rc.d/init.d/vsftpd              //服务启动脚本
/etc/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf      //服务的主配置文件
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/sbin/vsftpd                  //服务器端程序
/var/ftp                //ftp的默认家目录

ftp协议响应码:
1xx:服务器信息
2xx:正确响应信息
3xx:正常响应,某操作过程尚未完成,需进一步补充完成;
4xx:客户端错误;
5xx:服务器端错误;

vsftpd的用户类型:
需要注意的是,ftp服务器端文件路径是用户的家目录,查看用户家目录的相关信息可以通过finger命令来查看
1.匿名用户:事实上是服务器端自动映射的一个系统用户
客户端匿名连接:
[root@station92~]# ftp172.16.2.1 //连接测试
Connectedto 172.16.2.1 (172.16.2.1).
220(vsFTPd 2.2.2)//220是协议响应码,表示正常响应
Name(172.16.2.1:root): ftp//表示匿名访问
331Please specify the password.
Password:                  //匿名用户登录密码为空
230Login successful.
Remotesystem type is UNIX.
Usingbinary mode to transfer files.
ftp> pwd
257"/"    //匿名用户默认被锁定在“/“目录下,而本地用户没有被锁定,因此看以看所有的文件
 [root@stu2 ~]# finger ftp
Login:ftp                      Name: FTP User
Directory:/var/ftp                    Shell: /sbin/nologin
Neverlogged in.
Nomail.
NoPlan.
其中Directory: /var/ftp表示用户家目录路径信息

2.本地用户:即/etc/passwd中的用户,默认root和id号小于500的用户都禁止访问ftp
本地用户连接
[root@station92~]# ftp 172.16.2.1
Connectedto 172.16.2.1 (172.16.2.1).
220(vsFTPd 2.2.2)
Name(172.16.2.1:root): gentoo
331Please specify the password.
Password:
230Login successful.
Remotesystem type is UNIX.
Usingbinary mode to transfer files.
ftp>pwd
257"/users/gentoo"
ftp>ls
227Entering Passive Mode (172,16,2,1,236,228).
150Here comes the directory listing.
-rw-rw-r--    1 500    500      73175088 Jul 10 03:18linux-3.10.tar.xz
226Directory send OK.
服务器端查看本地用户信息
[root@stu2~]# finger gentoo
Login:gentoo                      Name:
Directory:/users/gentoo            Shell: /bin/bash
Lastlogin Sat Aug 17 09:54 (CST) on pts/1 from 172.16.254.54
Nomail.
NoPlan.
Root用户默认没有访问权限
[root@station92~]# ftp 172.16.2.1
Connectedto 172.16.2.1 (172.16.2.1).
220 (vsFTPd2.2.2)
Name(172.16.2.1:root): root
530 Permissiondenied.
Loginfailed.

3.虚拟用户:事实上服务器端自动映射的一个系统用户,多个虚拟用户同时被映射为一个系统用户,但不同的虚拟用户可以具有不同的访问权限

接下来请看第2页精彩内容: 

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/d677b7d6f104c01f87b5d3e4639cf26c.html