• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

Linux服务:Vsftpd文件服务器

网络服务 彭东稳 9年前 (2015-09-24) 35116次浏览 已收录 1个评论

FTP协议

FTP(File Transfer Protocol)文件传输协议,工作在TCP2021端口,其中21端口是用来控制用户连接,而20端口是用来数据连接的属于应用层协议。属于C/S模式,有服务器和客户端之分。

FTP用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:下载Download)和上传Upload)。下载文件就是从远程主机拷贝文件至自己的计算机上;上传文件就是将文件从自己的计算机中拷贝至远程主机上。

FTP连接模式

主动模式:服务器主动发起数据连接,首先由客户端向服务器的21端口建立ftp控制连接,当需要传输数据时;客户端以PORT命令告知服务器我打开了某端口你过来连接我,于是服务器从20端口向客户端的该端口发送请求并建立数据连接。

Linux服务:Vsftpd文件服务器

被动模式:服务器被动等待数据连接,如果客户机所在的网络的防火墙禁止主动模式连接,通常会使用被动模式,首先由客户机向服务器的21端口建立ftp控制连接,当需要传输数据时;服务器以PASV命令告知客户端我打开了某端口你来连接我,于是客户端向服务器的该端口(非20端口)发送请求并建立连接。

Linux服务:Vsftpd文件服务器

FTP传输模式

ASCII码模式

假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。

二进制模式

在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。

如在ASCII方式下传输二进制文件,即使不需要也仍会转译,这会损坏数据。(ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果传输二进制文件,所有的位都是重要的。)

Vsftpd管理

Vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 LinuxBSDSolaris HP-UNIX等系统上面,是一个完全免费的、开发源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。

Vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序,特点是小巧轻快,安全易用。在开源操作系统中常用的FTPD套件主要还有ProFTPDPureFTPdwuftpd等。

1. 安装Vsftp相关的软件包(selinux控制)

2. Vsftpd的文件

3. Vsftpd安全控制文件

/etc/vsftpd/ftpusers:黑名单,此文件中列出的用户将禁止登陆vsftpd服务器,不管该用户是否在user_list文件中出现。

/etc/vsftpd/User_list:此文件中包含的用户可能被禁止登陆,也可能被允许登陆具体取决于主配置文件vsftpd.conf中的设置,当存在userlist_enable=yes的配置项时user_list列表文件方可生效,若指定userlist_deny=yes则仅禁止此列表中的用户登陆,若指定userlist_deny=no则仅允许列表中的用户登陆。

4. Vsftpd主配置文件(基本不用修改)

以下是可选参数,有些已经默认开启,如果需要为FTP开启什么功能就添加对应的参数即可(注意:使用参数之间不能相互矛盾)

FTP客户端

安装FTP客户端

PS:这是Linux命令行提供的ftp客户端工具,有ftp和lftp。在Windows上也有很多FTP客户端工具,如cuteFTP,Filezilla等等。

FTP客户端命令

实验

1. 需求

A. 创建leader和eric两个可以登录的用户。

B. leader用户对FTP下的/var/ftp/leader目录有完全控制权限,而eric用户对/var/ftp/leader/eric目录只有写入权限。

C. 匿名用户可以读取除/var/ftp/leader/eric外的所有文件内容。

2. 安装Vsftpd

3. 安装VSftpd后主配置文件开启的参数如下,还有一些默认参数,这里没有显示出来。其实当默认的配置文件基本够用无需做多大的调整。

4. 创建用户并指定其宿主目录(这样用户就可以对其目录有了控制权限,并且当用户登录时直接到家目录)

5. 权限调整为/var/ftp/leader设置权限,属主为leader,属组为eric  并设置其权限为735

6. 重启vsftpd服务

建立基于Hash的虚拟用户

1. 安装db4-utils软件包

2. 建立虚拟用户的用户名/密码数据库库(/etc/vsftpd/vusers.list)

3. db_load工具将列表转化为DB数据库文件

4. 建立FTP访问的根目录及虚拟用户对应的系统账户

5. 建立PAM认证文件(/etc/pam.d/vsftpd.vu

6. 修改vsftpd.conf主配置文件,添加虚拟用户支持 (/etc/vsftpd/vsftpd.conf)

7. 为用户aabb建立独立的配置目录及主配置文件

8. 重启FTP

PS:所有建立的虚拟用户登录都是到了对应的virtual账户的家目录,另外启用虚拟用户之后系统用户就不可以登录了,因为没有了PAM认证。

建立基于MySQL的虚拟用户

1. 安装RPM版的Mysql及开发库

2. 安装支持Mysql的Pam模块

3. 准备数据库及相关表

4. 在MySQL中创建两个测试用户

5. 建立pam认证所需文件

6. 建立虚拟用户映射的系统用户及对应的目录其他用户要有读和执行权限

7. 给Vsftpd的配置文件添加如下参数

8. 虚拟用户登录已经可以但是其所有虚拟用户的权限都跟匿名用户一样,为虚拟用户配置访问权限,为用户tomjerry建立独立的配置目录及主配置文件

9. 重启FTP

PS:所有建立的虚拟用户登录都是到了对应的virtual账户的家目录,另外启用虚拟用户之后系统用户就不可以登录了,因为没有了PAM认证。

Shell中连接FTP


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (0)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!

(1)个小伙伴在吐槽