实验要求:

一、构建可匿名访问的ftp服务器

1.匿名用户能下载和上传文件到pub目录中。

2.本地用户登录ftp后禁锢在自己的宿主目录中,并禁止本人名账户访问ftp

3.所有上传的文件都去除非宿主位读写权限,使用ftp命令验证效果。

二、构建虚拟用户服务器

1.添加benet、班级名、本人名三个虚拟账户。

2.Benet用户只允许下载文件,班级名账户可以下载上传文件,本人账户可以下载上传文件和目录并可以删除、修改文件和目录的名称。

3.服务器最多允许1000个并发连接,每个ip最多可以同时连接两个,benet用户限速100kb/s





1.构建匿名访问的FTP服务

Linux中的ftp文件传输服务_FTP

安装vsftpd软件包


Linux中的ftp文件传输服务_FTP_02

RHEL6.5系统中,FTP匿名用户对应的系统用户为ftp,其宿主目录/var/ftp就是匿名访问vsftpd服务时所在的FTP根目录。

注意:FTP根目录的权限不允许匿名用户或其他用户有写入权限

这里,将子文件夹pub的宿主改为ftp,便于匿名用户ftp拥有上传数据的权限。

 

Linux中的ftp文件传输服务_FTP_03

在修改配置文件之前,一定要将其备份。


Linux中的ftp文件传输服务_FTP_04

修改vsftpd.conf配置文件,以下列出涉及的配置项:


Linux中的ftp文件传输服务_FTP_05

启用vsftpd服务的写入权限(全局性的选项,针对所有用户,若要允许其上传,都必须启用此配置项)。


Linux中的ftp文件传输服务_linux_06

允许匿名用户访问


Linux中的ftp文件传输服务_linux_07

允许匿名用户在可写入的目录中上传文件


Linux中的ftp文件传输服务_FTP_08

此配置项用于设置匿名用户所上传的文件或目录的权限掩码,拥有的权限=777-权限掩码。

这里,仅属主用户拥有权限。


Linux中的ftp文件传输服务_FTP_09

禁用本地用户登录


Linux中的ftp文件传输服务_linux_10

将所有的宿主目录禁锢在其宿主目录中,使用户不能够任意切换到服务器的其他文件夹中。


Linux中的ftp文件传输服务_linux_11

配置完成后,启动vsftpd服务,并使用netstat命令查看监听状态。


Linux中的ftp文件传输服务_FTP_12

linux字符界面访问FTP服务器,需要安装ftp安装包,从而可以执行ftp命令。


Linux中的ftp文件传输服务_FTP_13

用户名为ftp,不用输入密码直接回车,成功登录FTP服务器。

具体的指令可以通过执行?或help来查看在线帮助信息。(lcd指令可以在ftp目录和本地目录之间进行切换)

 

补充:用户验证的FTP服务

Linux中的ftp文件传输服务_FTP_14

Linux中的ftp文件传输服务_FTP_15

Linux中的ftp文件传输服务_FTP_16

Linux中的ftp文件传输服务_linux_17

Linux中的ftp文件传输服务_linux_18


Linux中的ftp文件传输服务_linux_19

启用user_list用户列表文件

Linux中的ftp文件传输服务_linux_20

仅允许列表中的用户登录


Linux中的ftp文件传输服务_linux_21

Linux中的ftp文件传输服务_FTP_22

修改user_list配置文件,添加用户。


Linux中的ftp文件传输服务_FTP_23

清空其他内容,输入允许访问的用户。


Linux中的ftp文件传输服务_linux_24

重新加载服务

 

2.构建虚拟用户访问的FTP服务

Linux中的ftp文件传输服务_FTP_25

创建文本格式的用户名、密码列表


Linux中的ftp文件传输服务_FTP_26

奇数行为用户名,偶数行用户对应的密码。


Linux中的ftp文件传输服务_FTP_27

使用db_load工具创建出Berkeley DB格式的数据库文件

选项:-T允许非Berkeley DB的应用程序使用从文本格式转换的DB数据文件

  -t hash指定读取数据文件的基本方法

  -f指定数据源文件

 

Linux中的ftp文件传输服务_FTP_28

查看转换后的文件类型


Linux中的ftp文件传输服务_linux_29

创建FTP根目录,添加虚拟用户的映射账号。

注意:vsftpd服务器对虚拟用户的控制采用了映射的控制方式,将所有的虚拟用户对应到同一个系统用户,该系统用户的宿主目录作为所有虚拟用户登录后共用的FTP根目录。


Linux中的ftp文件传输服务_FTP_30

调整权限以允许浏览目录


Linux中的ftp文件传输服务_FTP_31

Linux中的ftp文件传输服务_FTP_32

为虚拟用户创建PAM认证文件

db=/etc/vsftpd/vusers指定了要使用的虚拟用户数据库文件位置

注意:vsftpd服务默认的PAM认证文件位于/etc/pam.d/vsftpd,该文件适用于以linux主机的系统用户账号进行认证。

 

Linux中的ftp文件传输服务_linux_33

Linux中的ftp文件传输服务_linux_34

Linux中的ftp文件传输服务_FTP_35

需要映射本地用户,所以开启此项


Linux中的ftp文件传输服务_linux_36

Linux中的ftp文件传输服务_linux_37

启用用户映射功能


Linux中的ftp文件传输服务_linux_38

指定映射的系统用户名称


Linux中的ftp文件传输服务_FTP_39

指定新的PAM认证文件


Linux中的ftp文件传输服务_linux_40

为不同的虚拟用户建立独立的配置文件(指定了配置文件位置)


Linux中的ftp文件传输服务_FTP_41

限制并发客户连接最多为1000


Linux中的ftp文件传输服务_FTP_42

限制每个IP地址的连接数最多为两个

修改完vsftpd.conf配置文件后保存


Linux中的ftp文件传输服务_linux_43

创建用户配置文件夹,并且切换到该文件夹中。


Linux中的ftp文件传输服务_linux_44

Linux中的ftp文件传输服务_FTP_45

为不同的用户创建配置文件,默认具有访问FTP服务器的权限,根据需求添加其他权限即可。

该配置项表示用户最大传输速率为100kb/s


Linux中的ftp文件传输服务_linux_46

Linux中的ftp文件传输服务_linux_47


Linux中的ftp文件传输服务_FTP_48

Linux中的ftp文件传输服务_FTP_49

注意:需要为虚拟用户指定根目录,可以添加配置项:local_root=/指定的目录




附录:

常用的全局配置项

listen=YES:是否以独立运行的方式监听服务

listen_address=192.168.4.1:设置监听的 IP 地址

listen_port=21:设置监听 FTP 服务的端口号

write_enable=YES:是否启用写入权限

download_enableYES:是否允许下载文件

userlist_enable=YES:是否启用 user_list 列表文件

userlist_deny=YES:是否禁用 user_list 中的用户

max_clients=0:限制并发客户端连接数

max_per_ip=0:限制同一 IP 地址的并发连接数

 

常用的匿名 FTP 配置项

anonymous_enable=YES:启用匿名访问

anon_umask=022:匿名用户所上传文件的权限掩码

anon_root=/var/ftp:匿名用户的 FTP 根目录

anon_upload_enable=YES:允许上传文件

anon_mkdir_write_enable=YES:允许创建目录

anon_other_write_enable=YES:开放其他写入权

anon_max_rate=0:限制最大传输速率(字节/秒)

 

常用的本地用户 FTP 配置项

local_enable=YES:是否启用本地系统用户

local_umask=022:本地用户所上传文件的权限掩码

local_root=/var/ftp:设置本地用户的 FTP 根目录

chroot_local_user=YES:是否将用户禁锢在主目录

local_max_rate=0:限制最大传输速率(字节/秒)