实验要求:

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

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

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

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

二、构建虚拟用户服务器

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

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

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





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

Linux中的ftp文件传输服务_第1张图片

安装vsftpd软件包


Linux中的ftp文件传输服务_第2张图片

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

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

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

 

wKioL1gdddmjA9qBAAAD2NDcsSs283.png

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


wKioL1gddVqyUmpbAAACaekg3NA498.png

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


wKiom1gddVuwmQfDAAABSDGDdp0644.png

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


wKiom1gddVvB5HhmAAABV4ebq9U658.png

允许匿名用户访问


wKioL1gddVvD7IxoAAABY72gggQ621.png

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


wKioL1gddVuA3TJrAAABHtNgyAQ047.png

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

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


wKiom1gddVyQ0BPwAAABHxUIT0E332.png

禁用本地用户登录


wKiom1gddVyjhOcGAAABenYTWFQ588.png

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


wKioL1gddVyhx3fDAAAJa08zFDM946.png

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


wKioL1gddnfBOaiPAAALcwJ0ijo282.png

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


Linux中的ftp文件传输服务_第3张图片

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

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

 

补充:用户验证的FTP服务

wKiom1gddnjxiJbiAAACiK4MqrE890.png

wKioL1gddniRSkSSAAABU9m2p3U090.png

wKiom1gddniSn2oiAAABbIe3Muk077.png

wKioL1gddnnz5vobAAABU92BNUo905.png

wKiom1gddnmBDMabAAABjIjbYY8301.png


wKioL1gddnnClYNqAAABfefCUyI257.png

启用user_list用户列表文件

wKiom1gddnrDZG2DAAABXAaN9uY266.png

仅允许列表中的用户登录


wKioL1gdd_bBZgkEAAADyX1Ad7E243.png

wKioL1gddnqD3I0RAAACnmuvkBw911.png

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


wKioL1gdeCTAl1msAAACH8o0h6E007.png

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


wKiom1gdeCTzNt4ZAAAE-S6JCvM784.png

重新加载服务

 

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

wKiom1gdeCSzYjmkAAACroey4No879.png

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


Linux中的ftp文件传输服务_第4张图片

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


wKioL1gdeCTgXYQgAAAEUemsWQ8392.png

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

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

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

  -f指定数据源文件

 

wKiom1gdeCWB6Ez8AAAEdBIks6I739.png

查看转换后的文件类型


wKioL1gdeCWiK7OkAAADYGE2Ppw942.png

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

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


wKiom1gdeCXjby7bAAACbNwmg_4133.png

调整权限以允许浏览目录


wKioL1gdeMaxFNuQAAAC4skDwc0672.png

wKiom1gdeMaiigr6AAAFt6h8sEs186.png

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

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

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

 

wKiom1gdeMfy-SrwAAAC8SpvoH8352.png

wKioL1gdeMfh8fiHAAABXsHGBvc443.png

wKiom1gdeMfygpulAAABM8Jeuhs322.png

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


wKioL1gdeMfzVj-uAAABLE_LWVI322.png

wKiom1gdeVzDy9zvAAABZcx3i9w126.png

启用用户映射功能


wKiom1gdeVzhTuqgAAABn5G9Y-w358.png

指定映射的系统用户名称


wKioL1gdeMjy7-B7AAABvS8hJaM908.png

指定新的PAM认证文件


wKiom1gdeMjDi-4XAAACJSKQSmc964.png

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


wKiom1gdeMiBq8ZDAAABTs3EfMI234.png

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


wKioL1gdeMmxvFXRAAABYSl-evk322.png

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

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


wKioL1gdeh-ikUdYAAAD8grmfUw829.png

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


wKiom1gdeh-gIUarAAACNm3a7uM539.png

wKiom1gdeh_Stuc1AAAB0ChOZ9A047.png

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

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


wKioL1gdeh_Av9T2AAACU54aTKQ433.png

wKiom1gdeiCS3U8iAAAB8mNNjh4059.png


wKioL1gdeiCwzfFYAAACIXdTly8821.png

wKioL1gdeiCQ-XuAAAADanOYS3g619.png

注意:需要为虚拟用户指定根目录,可以添加配置项: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:限制最大传输速率(字节/秒)