linux搭建ftp服务(Linux如何搭建FTP服务器)
linux搭建ftp服务(Linux如何搭建FTP服务器)1)准备匿名 FTP 访问的目录1.匿名访问的ftp服务1.FTP服务器概述FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。20端口用于建立数据连接,并传输文件数据;21端口用于建立控制连接,并传输FTP控制命令。根据FTP服务器在建立数据连接过程中的主、被动关系,FTP数据连接分为主动模式和被动模式,两者的含义及主要区别如下:其实很好理解,说白了就像两个人谈恋爱还不敢让家里人知道一样,主动模式就是:好比男生和女生都在外地念书的时候,男生要约女生出去玩,男生肯定主动嘛,就说我们一起出去玩吧(就像控制连接,发出了一个指令),这时候女生可能就会看心情要不要答应他,如果女生答应了,告诉男生"我在老地方等你,你来老地方接我"(就像传输数据,也给出一个指令来表达是否拒绝),于是男生就接上女生一起出去玩了。
Linux如何搭建FTP服务器
前言:上个文档我们了解了如何构建samba文件共享服务,由于samba文件共享通常要用到局域网协议NetBIOS的名称解析功能,因此多数时候只在内部网络中使用。现在让我们一起再来了解在局域网和广域网中都使用的另一种文件服务器——FTP文件传输服务器。
一、vsftp服务基础
在学习如何构建FTP服务器之前,首先应对FTP的工作原理、服务器端软件有一个基本的认识。
1.FTP服务器概述
FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。20端口用于建立数据连接,并传输文件数据;21端口用于建立控制连接,并传输FTP控制命令。根据FTP服务器在建立数据连接过程中的主、被动关系,FTP数据连接分为主动模式和被动模式,两者的含义及主要区别如下:
- 主动模式:服务器主动发起数据连接。首先由客户端向服务端的21端口建立FTP控制连接,当需要传输数据时,客户端以PORT命令告知服务器"我打开了某端口,你过来连接我",于是服务器从20端口向客户端的该端口发送请求并建立数据连接。
- 被动模式:服务器被动等待数据连接。如果客户机所在网络的防火墙禁止主动模式连接,通常会使用被动模式。首先由客户端向服务端21端口建立FTP控制连接,当需要传输数据时,服务器以PASV命令告知客户端"我打开了某个端口,你过来连接我",于是客户端向服务器的该端口(非20)发送请求并建立数据连接。
其实很好理解,说白了就像两个人谈恋爱还不敢让家里人知道一样,主动模式就是:好比男生和女生都在外地念书的时候,男生要约女生出去玩,男生肯定主动嘛,就说我们一起出去玩吧(就像控制连接,发出了一个指令),这时候女生可能就会看心情要不要答应他,如果女生答应了,告诉男生"我在老地方等你,你来老地方接我"(就像传输数据,也给出一个指令来表达是否拒绝),于是男生就接上女生一起出去玩了。
1.匿名访问的ftp服务
1)准备匿名 FTP 访问的目录
使匿名用户 FTP 对该目录有写入权限
2)开放匿名用户配置,并启动 vsftpd 服务
3)测试匿名 FTP 服务器
Windows主机中可以直接在"我的电脑"地址栏输入URL地址访问,如:"ftp://192.168.4.11"。
Linux系统中要提前安装ftp客户端程序,在系统光盘中ftp客户端的软件包为"ftp-0.17-67.el7.x86_64.rpm", 可以使用RPM方式直接安装。如:"rpm -ivh ftp-0.17-67.el7.x86_64.rpm"(挂载光盘,在系统盘中的Packages目录下安装)。安装完即可使用ftp命令测试了。如下图所示:
成功登录FTP服务器以后,在此操作界面中,可以执行实现各种FTP操作的交互指令,例如:cd:切换目录,dir/ls:查看目录,get:下载,put:上传等,执行?或help命令可以查看指令帮助。
2.用户验证的FTP服务
vsftpd可以直接使用Linux主机的系统用户作为FTP账号,提供基于用户名/密码的登录验证。用户使用系统用户账号登录FTP服务器之后,将默认位于自己的宿主目录中,且在宿主目录中拥有读写权限。
1)修改 vsftpd.conf 配置文件
启用本地用户访问。如下图:
重启完服务可以测试一下,和匿名访问差不多,这里就不再详细讲述了。
2)结合user_list文件灵活控制用户访问
先在user_list文件中添加希望登录的用户,然后再在配置文件中启用user_list用户列表,最后重启服务即可。如下图:
测试在这里也不再赘述了
3.vsftpd服务的其他常用配置
1)修改 vsftpd 服务的监听地址、端口
2)允许使用 FTP 服务器的被动模式
3)限制 FTP 连接的并发数、传输速率
三、基于虚拟用户的FTP服务
在vsftpd服务器中,使用虚拟用户的主要好处在与:可以将FTP登录的账号与系统登录账号区分开,用户名、密码都不相同,从而进一步增强了FTP服务器的安全性。
基本步骤。如下图:
1.创建账号数据
vsftpd服务使用Berkeley DB格式的数据库文件来存放虚拟用户账号。建立这种数据库文件需要用到db_load工具,db_load工具由db4-utils软件包提供,默认已安装。
1)创建文本格式的用户名、密码列表
奇数行为账号名,偶数行为密码(即上一行中账号的密码)
2)转化为 Berkeley DB 格式的数据文件
需要db_load 转换工具,默认已安装。
"-f"用于指定数据源文件
"-T"表示允许非Berkeley DB的应用程序使用从文本格式转换的DB数据文件
"-t hash"用于指定读取数据文件的基本方法
3)为了提高虚拟用户账号文件的安全性,应将文件权限设置为600,以免数据外泄
图示:
4)创建 FTP 根目录及虚拟用户映射的系统用户(此账号无需设置密码及登录shell)。如下图:
5)建立支持虚拟用户的 PAM 认证文件
创建好虚拟用户的账号数据文件后,还需要对vsftpd服务的配置做相应的调整,以便识别并读取新的用户信息。在vsftpd服务器中,用户认证是通过PAM(Pluggable Authentication Module 可插拔认证模块)机制来实现的,该机制包含灵活的选择认证方式。Vsftpd服务默认的PAM认证文件位于/etc/pam.d/vsftpd,该文件适用于以Linux主机的系统用户账号进行认证。若要读取虚拟用户的账号数据文件,则需要创建新的PAM认证配置。(如下图)
2.添加虚拟用户支持
1)在 vsftpd.conf 文件中添加虚拟用户支持配置。如下图:
2)为不同的虚拟用户建立独立的配置文件
通过前面的几个步骤,实际上已经可以重新加载vsftpd并提供服务了,使用任一个虚拟用户账号都可以登录FTP服务器并下载文件。但因为所有的虚拟用户都映射到同一个系统用户账号,因此FTP访问权限也是相同的,要么只能下载,要么只能上传。
若要为不同的虚拟用户账号设置不同的访问权限,可以通过为每个虚拟用户建立单独的配置文件来实现。为FTP用户启用独立配置文件,需要修改vsftpd.conf配置文件,天剑"user_config_dir"配置项。如下图:
有了上述配置以后,就可以在/etc/vsftpd/vusers_dir/目录中为每个虚拟用户分别建立配置文件了。如下图
在vsftpd.conf文件中启用了"user_config_dir"配置项以后,应该为每一个虚拟用户都建立一个单独的配置文件(可以是空文件),否则该用户可能无法登录。在每个用户的独立配置文件中,可以添加新的配置项来限制访问权限、下载速率等。
3.重启服务并测试
重新加载 vsftpd 配置:systemctl restart vsftpd
使用虚拟 FTP 账户访问测试
- mike 用户可以登录,并可以浏览、下载,但无法上传
- john 用户可以登录,并可以浏览、下载,也可以上传
- 匿名用户或其他系统用户将不能登录
####### 本节完 #######
文档有点长,估计认真看完真的很难。很开心你们能看到这里。mua