一首先介绍下访问FTP服务的用户类型:

    1:匿名用户,客户端在访问FTP资源时,可以在没有服务器账户和密码的情况下,使用匿名身份获取公共资源,但权限较小!

    2:实体用户:是指FTP服务器的本地账户,使用/etc/passwd中的用户为认证用户。

    3:虚拟用户:区别于实体用户,FTP支持建立的专有用户,将密码及帐号保存在数据库中,采用非系统账户访问服务器资源。相对于实体用户而言,虚拟用户只能访问FTP共享资源,增加了系统的安全性。并且,客户端使用虚拟用户登录,需要提交帐号和密码,管理员可以根据这些帐号进行策略设置,增加了对用户和下载的可管理性。考虑到FTP服务器的安全性及管理因素,选择虚拟账户登录,是一个非常可靠的方案!

二FTP的工作原理

ftp协议工作时,需要使用两个网络进行沟通连接,一个叫控制链接,一个叫数据连接!

控制链接:控制连接是客户端与ftp服务器进行沟通的连接,客户端连接ftp,主机之间发送ftp指令都是通过控制连接来完成的。服务器通过21端口等待客户端的请求!ftp服务器接受来自客户端的请求,完成连接过程,这样的连接过程就称为ftp控制连接!

数据连接:数据连接是与ftp服务器进行文件传输或者显示文件列表的连接。ftp服务器数据链接端口号,有控制连接进行选择!数据连接:就是传输文件!

nfs数据传输的原理:

1:ftp服务器会自动对默认端口21进行监听,当某个客户端向这个端口请求建立连接时,便激活了ftp服务器上的控制进程。通过这个控制进程,ftp服务器对连接用户名,密码以及连接权限进行身份验证!

2:当ftp服务器进行身份验证后,ftp服务器和客户端之间还会建立一条传输数据的专有连接!

3:在传输数据的过程中,ftp服务器的控制进程将一直工作,并不断发出指令控制整个ftp数据传输,传输完毕后控制进程给可断发送结束指令!

数据连接有两种模式:主动模式和被动模式!

1:主动模式的数据传输专有连接是建立在控制连接后,首先由ftp服务器使用20端口主动向客户端进行连接,建立专用于传输数据的连接。这种方式在网络管理上比较好控制。ftp服务器上的端口21用于用户验证,端口20用于数据传输,只要这两个端口开放就可以使用ftp功能,此时客户端只是处于接受状态!

2:与主动模式不同,被动模式的数据传输专有连接是建立在数据控制后由客户端向ftp服务器发起的。客户端使用那个端口,连接到ftp服务器的那个端口都是随机产生的。服务器并不参与数据的主动传输,只是被动接受!

三主配置文件

    vsftp的主配置文件是在/etc/vsftp目录下面,其主配置文件为vsftp.conf。对于任何一个服务而言,祝配置文件都是最为重要的,绝大多数的设置都是在与它打交道。

    vsftp的主配置文件一共有117行,大部分是注释内容,去掉注释部分只剩下13行!简单介绍下这是十三行内容:

1:第一类是控制整个vsftp进程的操作行为字段:

listen =yes /no

   listen字段表示是否使用stand-alone模式启动vsftpd,而不是使用超级进程xinted控制它!vsftpd推荐使用stand-alone方式!(yes表示是,no表示否)

2:登录和访问控制选项:

    2.1是否允许用户匿名登录(yes表示允许,no表示不允许)

eg:anonymous_enable= yes / no

 2.2是否允许用户本地登录(yes表示允许,no表示不允许)

eg:local_enable=yes/no

 2.3设置在使用PAM模块进行验证时所使用的PAM配置文件名

pam_service_name 该字段默认为vsftpd,默认的pam文件为/etc/pam.d/vsftpd

 2.4userlist_enable该字段表示是否使用控制用户登录的用户列表。用户列表由userlist_file字段指定。如果用户出现在列表中,则在登录ftp服务器时被禁止登录!

 userlist_enable=yes/no
    userlist_file=/etc/vsftpd/user_list


2.5表示是否使用tcp_wrappers远程访问控制机制!

tcp_wrappers=yes/no

第三类:

匿名用户访问服务器的相关配置,使用这些字段时必须设置annoymous_enable=yes!

anon_root=/var/ftp/tmp      /设置匿名用户的根目录
anon_mkdir_write_enable=yes/no /是否允许匿名用户创建目录
anon_upload_enable=yes/no /是否允许匿名用户上传文件
anon_word_readable_only=yes/no /用于设置是否允许匿名用户下载可阅读文档
no:表示允许匿名用户浏览整个服务器文件系统
yes:表示匿名用户下载可阅读文档
anon_max_rate /设置匿名用户的最大下载速度,单位是byte/s

第四类:

  使用本地用户访问服务器的相关配置,使用这些字段必须将local_enable设为yes!

local_root 设置本地用户的根目录,当本地用户登录后,会自动进入该目录
local_umask /设置本地用户新建umask数值
user_config_dir /设置用户配置文件所在目录!


第五类: 影响目录设置的相关字段:

dirmessage_enable=yes/no

yes表示开启,no表示关闭:开启了目录提示功能,则当用户进入某一目录时,会检查该目录下是否有message_file字段所指定的文件,如果有,则会将文件内容显示在屏幕上

chroot_local_user=yes/no是否将本地用户锁在家目录中
chroot_list_enable=yes/no是否锁定使用者的家目录
chroot_list_file /设置锁定文件用户的列表文件,文件中一行代表一个用户。

第六类:文件传输相关的字段:

write_enable=yes/no

yes表示可写,no表示不可写

第七类:有关日志行为的字段

xferlog_enable=yes/no

表示是否设置一个用于记录下载和上传的日志文件!

eg :
xferlog_enable=yes
xferlog_file=/var/log/vsftp.log
xferlog_std_format=yes/no:该字段用于设置日志的格式是否采用标准形式!

第八类:

connect_from_port_20=yes/no:

表示:设置以port模式进行数据传输时使用20端口

connect_timeout=60

表示客户端尝试链接vsftp命令通道的超时时间,单位是妙!如上设置超时时间为60s!