前面的系列文章基本讲完了linux管理相关的基础知识,从本篇开始讲解centos7中服务程序的部署和配置,以便为外部提供各种服务。
日常工作和娱乐中,我们所需的各种资源都离不开网络以及各种服务,我们通过网络获取部署在其他服务器上的各种服务资源,这些服务包括文件服务、邮件服务、媒体服务等等。
一般情况下,我们使用计算机上网的一个重要目的就是为了获取资料,而文件传输则是获取资料的方式。因此,我们首先来了解下linux中文件传输相关的知识。
一、文件传输协议FTP
1.1 FTP产生背景
“无规矩不成方圆”,这说明了规则的重要性。同样,当今的互联网由成千上万台机器组成,这些机器包括个人计算机、工作站、服务器、巨型机等各种形形色色的设备,并且这些设备中使用的操作系统还不一样,有的可能是用的windows,而有的则是Linux或其他系统。
要在这么纷繁复杂的设备之间传输文件,那就必须要有一定的规则,大家都按规则办事,传输的文件才能相互识别,达到正确传递信息的目的。在这种背景下,为了解决文件传输的问题,文件传输协议应运而生。
1.2 FTP相关概念
文件传输协议(File Transfer Protocol,FTP),是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用 20、21 号端口,其中20端口是数据端口用于进行数据传输,21端口为命令端口,用于接收客户端发出的相关FTP命令和参数。
本系列文章第三篇提到的所有工具都可以实现在Windows中远程到Linux主机并上传下载文件,并且在Linux主机之间也可以通过scp命令上传文件,那为什么还需要FTP呢?个人认为应该是因为FTP一般搭建与内网之中,有具有容易搭建、方便管理的特点,并且一些FTP客户端工具还具有文件多点下载以及断点续传等功能,这些是scp做不到的。
FTP是C/S架构,也就是基于客户端/服务器的模式,FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据传输链路的主机。
FTP协议的传输拓扑结构如下:
FTP协议工作模式有两种:主动模式和被动模式,其中被动模式是默认的工作模式。
-
主动模式:FTP 服务器主动向客户端发起连接请求。
-
被动模式:FTP 服务器等待客户端发起连接请求。
由于FTP一般部署在企业内网,如果开启并配置了防火墙,有时候需要将FTP的工作模式设置为主动模式,才可以传输数据。
二、Linux下基于FTP协议工具
2.1 vsftpd服务安装
vsftpd(very secure ftp daemon)非常安全的FTP守护进程,是一款运行在Linux系统上的免费开源的FTP服务端程序。其主要特点是:安全性高、传输速度快、支持虚拟用户验证。
默认情况Centos7中是没有安装vsftpd的,因此需要手动通过yum仓库安装,根据前文的讲解可以用光盘资源自带的yum源,也可以直接配置外网源。本例采用默认的外网yum源进行安装。
[root[@origin](https://my.oschina.net/zorigin) ~]# rpm -q vsftpd
package vsftpd is not installed
[root[@origin](https://my.oschina.net/zorigin) ~]# yum install vsftpd
Loaded plugins: fastestmirror, langpacks
...省略部分内容
Installed size: 353 k
Is this ok [y/d/N]: y
Downloading packages:
vsftpd-3.0.2-25.el7.x86_64.rpm | 171 kB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : vsftpd-3.0.2-25.el7.x86_64 1/1
Verifying : vsftpd-3.0.2-25.el7.x86_64 1/1
Installed:
vsftpd.x86_64 0:3.0.2-25.el7
Complete!
[root[@origin](https://my.oschina.net/zorigin) ~]# rpm -q vsftpd
vsftpd-3.0.2-25.el7.x86_64
[root[@origin](https://my.oschina.net/zorigin) ~]#
通过rpm命令查看是否已经安装过vsftpd,如果没有安装则通过yum install命令安装即可,安装过程中需要按提示输入y继续下载并安装。
> 注意:从现在开始,凡是涉及到服务的配置,就要考虑防火墙和SELinux的因素,很多教程和书籍上都是直接关闭防火墙和selinux,虽然这样在学习阶段可以避免干扰,但是这样非常不安全。另外凡是配置了服务,都要加入开机启动中,让其每次重启自动生效。
安装vsftpd服务后,会在/etc下自动生成配置文件
[root@ftpserver ~]# ll /etc/vsftpd/
total 20
-rw-------. 1 root root 125 Oct 31 2018 ftpusers
-rw-------. 1 root root 361 Oct 31 2018 user_list
-rw-------. 1 root root 5116 Oct 31 2018 vsftpd.conf
-rwxr--r--. 1 root root 338 Oct 31 2018 vsftpd_conf_migrate.sh
各个文件的解释
文件名 | 作用 |
---|---|
vsftpd.conf | 主配置文件 |
ftpusers | 黑名单 |
vsftpd_conf_migrate.sh | 迁移脚本 |
user_list | 用户列表,与userlist_enbale和userlist_deny选项密切相关 |
查看主配置文件vsftpd.conf内容可以看到各项配置信息,需要根据实际情况来进行配置,其中主要的参数和作用如下:
参数 | 作用 |
---|---|
listen=[YES|NO] | 是否以独立运行的方式监听服务 |
listen_address=IP地址 | 设置要监听的IP地址 |
listen_port=21 | 设置FTP服务的监听端口 |
download_enable=[YES|NO] | 是否允许下载文件 |
userlist_enable=[YES|NO] | 设置用户列表为“允许”操作 |
userlist_deny=[YES|NO] | 设置用户列表为“禁止”操作 |
max_clients=0 | 最大客户端连接数,0为不限制 |
max_per_ip=0 | 同一IP地址的最大连接数,0为不限制 |
anonymous_enable=[YES|NO] | 是否允许匿名用户访问 |
anon_upload_enable=[YES|NO] | 是否允许匿名用户上传文件 |
anon_umask=022 | 匿名用户上传文件的umask值 |
anon_root=/var/ftp | 匿名用户的 FTP 根目录 |
anon_mkdir_write_enable=[YES|NO] | 是否允许匿名用户创建目录 |
anon_other_write_enable=[YES|NO] | 是否开放匿名用户的其他写入权限(包括重命名、删 除等操作权限) |
anon_max_rate=0 | 匿名用户的最大传输速率(字节/秒),0 为不限制 |
local_enable=[YES|NO] | 是否允许本地用户登录FTP |
local_umask=022 | 本地用户上传文件的umask值 |
local_root=/var/ftp | 本地用户的 FTP 根目录 |
chroot_local_user=[YES|NO] | 是否将用户权限禁锢在FTP目录,以确保安全 |
local_max_rate=0 | 本地用户最大传输速率(字节/秒),0为不限制 |
不用完全记住这些参数,需要时再来查看即可。
2.2 ftp客户端安装
ftp是Linux系统中以命令行界面的方式来管理FTP传输服务的客户端工具。默认也是没有安装的,需要手动安装。
[root@origin ~]# rpm -q ftp
package ftp is not installed
[root@origin ~]# yum install ftp
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
...省略部分内容
Total download size: 61 k
Installed size: 96 k
Is this ok [y/d/N]: y
Downloading packages:
ftp-0.17-67.el7.x86_64.rpm | 61 kB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : ftp-0.17-67.el7.x86_64 1/1
Verifying : ftp-0.17-67.el7.x86_64 1/1
Installed:
ftp.x86_64 0:0.17-67.el7
Complete!
[root@origin ~]# rpm -q ftp
ftp-0.17-67.el7.x86_64
[root@origin ~]#
通过yum install命令即可安装成功,ftp客户端工具安装成功后,接下来就是及操作下文件传输的功能。
2.3 vsftpd三种认证模式
vsftpd作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到FTP服务器上:匿名开放模式、本地用户模式、虚拟用户模式。实际生产环境中虚拟用户模式用的较多。
-
匿名开放模式:任何人都可以无需密码验证而直接登录到FTP服务器,是一种最不安全的认证模式。
-
本地用户模式:是通过Linux系统本地的账户密码信息进行认证