60分钟

第7章 应用服务器管理

【学习目标】

1.知识目标

理解FTP/Mail/NFS服务原理与配置过程。

能理解Samba/LDAP/VPN服务原理与配置过程。

掌握搭建rsync服务。

2.技能目标

熟悉FTP/Mail/NFS服务安装与配置。

熟悉Samba/LDAP/VPN服务安装与配置。

熟悉rsync用法并能掌握搭建rsync服务方法。

【认证考点】

掌握多种应用服务器的类型、工作原理与基本概述。

熟悉VSFTPD服务器配置文件、连接选项及配置方法。

熟悉Mail/NFS服务概述、常用参数配置与配置过程。

熟悉Samba/LDAP/VPN等配置文件与配置过程和服务安装。

掌握rsync用法与搭建方法。

项目引导:“重庆季目有限公司”的应用服务器管理

【项目描述】

重庆季目有限公司是重庆一家新的中型服务公司,该公司的大型通用网络上部署了多种类型的服务器,以满足员工间对不同文件类型的传输和下载以及网络配置要求。本章将通过该公司在网络运营发展过程中需要的各种网络服务,来配置与安装不同的网络应用服务器。

知识储备

7.1应用服务器类型

中型公司的大型通用网络可能会部署多种类型的服务器,一般包括以下几种类型:

7.1.1 FTP服务器

FTP(File transfer protocol)是文件传输协议的简称。FTP的作用正如其名所示,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)并查看远程计算机中有哪些文件,然后把文件从远程计算机拷到本地计算机,或把本地计算机的文件送到远程计算机去。

FTP工作原理:以下载文件为例,当用户启动FTP从远程计算机拷贝文件时,事实上用到了两个程序:一个是本地机上的FTP客户端程序,它向FTP服务器提出拷贝文件的请求;另一个是运行在远程计算机上的FTP服务器程序,它响应用户的请求,把用户指定的文件传送到用户的计算机中。

vsFTPd中的三类用户:

1.本地用户

本地用户是指具有本地登录权限的用户,这类用户在登录FTP服务器时,所用的登录名为本地用户名,采用的密码为本地用户的口令。登录成功之后进入的为本地用户的目录。

2.虚拟用户

虚拟用户只具有从远程登录FTP服务器的权限,只能访问为其提供的FTP服务。虚拟用户不具有本地登录权限。虚拟用户的用户名和口令都是由用户口令库指定。一般采用PAM进行认证。

3.匿名用户

匿名用户在登录FTP服务器时并不需要特别的密码就能访问服务器。一般匿名用户的用户名为ftp或anonymous。

FTP服务器支持通过文件传输协议工具移动文件。FTP服务器可通过FTP客户端程序远程访问。

7.1.2 Samba服务器

1.Samba概述

Samba是一组软件包,使Linux支持SMB协议,该协议是在TCP/IP上实现的,它是Windows网络文件和打印共享的基础,负责处理和使用远程文件和资源。

2.Samba服务工作原理

(1)SMB协议

SMB(Server Message Block)协议是用来在微软公司的Windows操作系统之间共享文件和打印机的一种协议。Samba使用SMB协议在Linux和Windows之间共享文件和打印机。

(2)SMB功能

利用Samba可以实现如下功能:

①把Linux系统下的文件共享给Windows系统。

②在Linux系统下访问Windows系统的共享文件。

③把Linux系统下安装的打印机共享给Windows系统使用。

④在Linux系统下访问Windows系统的共享打印机。

(3)SMB软件

Samba是用来实现SMB协议的一种软件,由澳大利亚的Andew Tridgell开发,是一套UNIX系统能够应用Microsoft网络通信协议的软件。

7.1.3 电子邮件服务器

邮件服务器是一种用来负责电子邮件收发管理的设备。它比网络上的免费邮箱更安全和高效,因此一直是企业公司的必备设备。

1.常见的电子邮件协议

( 1 ) SMTP:主要负责将邮件在网络上的主机之间传输。

( 2 )POP(Post Office Protocol,邮局协议)。负责把邮件从邮件服务器上的电子邮箱中传输到本地邮件客户端。

( 3 )IMAP:POP3的一种替代协议。POP3是从邮件服务器中下载邮件存起来,IMAP 则是将邮件留在服务器端直接对邮件进行管理、操作。

电子邮件服务器便于发送和接收电子邮件。如果您的计算机上有电子邮件客户端,则该软件将连接到IMAP或POP电子邮件服务器以将邮件下载到您的计算机,而SMTP服务器则通过电子邮件服务器发回邮件。

2.Mail服务器工作原理

邮件服务器构成了电子邮件系统的核心。每个收信人都有一个位于某个邮件服务器上的邮箱(mailbox)。Bob的邮箱用于管理和维护已经发送给他的邮件消息。一个邮件消息的典型旅程是从发信人的用户代理开始,邮件发信人的邮件服务器,中转到收信人的邮件服务器,然后投递到收信人的邮箱中。当Bob想查看自己的邮箱中的邮件消息时,存放该邮箱的邮件服务器将以他提供的用户名和口令认证他。Alice的邮件服务器还得处理Bob的邮件服务器出故障的情况。如果Alice的邮件服务器无法把邮件消息立即递送到Bob的邮件服务器,Alice的服务器就把它们存放在消息队列(message queue)中,以后再尝试递送。这种尝试通常每30分钟左右执行一次:要是过了若干天仍未尝试成功,该服务器就把这个消息从消息队列中去除掉,同时以另一个邮件消息通知发信人(即Alice)。

简单邮件传送协议(SMTP)是因特网电子邮件系统首要的应用层协议。它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。跟大多数应用层协议一样,SMTP也存在两个端:在发信人的邮件服务器上执行的客户端和在收信人的邮件服务器上执行的服务器端。SMTP的客户端和服务器端同时运行在每个邮件服务器上。当一个邮件服务器在向其他邮件服务器发送邮件消息时,它是作为SMTP客户在运行。当一个邮件服务器从其他邮件服务器接收邮件消息时,它是作为SMTP服务器在运行。

7.1.4 NFS服务器

NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利。

NFS一般用来存储共享视频,图片等静态数据。

1.NFS挂载原理

如图7-1-1所示,当我们在NFS服务器设置好一个共享目录/home/public后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如下图客户端A与客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/home/public的所有数据。如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。挂载后,NFS客户端查看磁盘信息命令:#df –h。

既然NFS是通过网络来进行服务器端和客户端之间的数据传输,那么两者之间要传输数据就要有想对应的网络端口,基本上NFS这个服务器的端口开在2049,但由于文件系统非常复杂。因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据的端口是随机选择的,是小于1024的端口。既然是随机的那么客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?这时就需要通过远程过程调用(Remote Procedure Call,RPC)协议来实现。

图7-1-1 服务器挂载结构图

2.RPC与NFS通讯原理

因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,记客户端可以连接到正常端口上去。

那么RPC又是如何知道每个NFS功能的端口呢?

首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口,RPC就会记录下这些端口,并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端。如此客户端就会获取NFS服务器端的端口信息,就会以实际端口进行数据的传输了。

3.NFS客户端和NFS服务器通讯过程

图7-1-2 NFS工作原理图

如图7-1-2所示,NFS客户端和NFS服务器通讯分为以下几个过程:

(1)首先服务器端启动RPC服务,并开启111端口。

(2)服务器端启动NFS服务,并向RPC注册端口信息。

(3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口。

(4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

(5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

项目实施

重庆季目有限公司考虑到系统的稳定和安全性,打算在Linux平台上搭建各种应用服务器,以实现文件的共享满足各部门员工的需求,还要考虑到部门员工信息的私密性以及公司资料的机密性等问题,因此在Linux平台上需要进行各种服务器的搭建与实施。

需要完成的任务:

  • FTP/Mail/NFS服务器安装与配置;
  • Samba/LDAP/VPN服务器的安装与配置;
  • 搭建rsync服务掌握rsync用法。

7.2任务1:FTP服务器安装与配置

FTP服务采用客户机/服务器模式,FTP客户机和服务器使用TCP建立连接。FTP服务器使用两个并行的TCP连接来传送文件,一个是控制连接;另一个是数据连接。控制连接用于在客户主机和服务器主机之间发送控制信息,如用户名和口令改变远程目录的命令、取来或放回文件的命令。数据连接用于真正传输文件。

FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。

FTP(File Transfer Protocol: 文件传输协议)作用: Internet 上用来传送文件的协议。

常见FTP服务器有:(1)windows:Serv-U FTP Server,filezilla_server;(2)Linux:VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。

特点:它是一个安全、高速、稳定的FTP服务器;

7.2.1 FTP服务器的安装

(1)首先查看是否有FTP服务

rpm –qa|grep vsftp

(2)如果没有安装FTP服务,则首先挂载光盘,然后安装。挂载命令如下:

mkdir  /mnt/cdrom
mount  –t iso9660 /dev/cdrom  /mnt/cdrom
图7-2-1 挂载到光盘下

(3)安装vsftp服务ls vsftp*,使用Tab键自动补全。

rpm –ivh vsftpd-2.0.5-12.el5.i386.rpm

如图7-2-2所示。

图7-2-2 vsftpd主程序包的安装

(4)vsftpd相关文档的查询,核心配置文件。

[root@localhost Packages]# ll /etc/vsftpd
总用量 20
-rw-------. 1 root root  125 6月  10 2014 ftpusers //指定哪些用户不能访问FTP服务器
-rw-------. 1 root root  361 6月  10 2014 user_list //指定允许访问FTP的用户列表
-rw-------. 1 root root 5030 6月  10 2014 vsftpd.conf //vsftpd的核心配置文件
-rwxr--r--. 1 root root  338 6月  10 2014 vsftpd_conf_migrate.sh //vsftpd的变量和脚本的设置,一般不需要改动

7.2.2 FTP服务器的配置

(1)配置vsftpd.conf主配置文件

vi /etc/vsftpd/vsftpd.conf //打开配置文件

(2)服务器配

图7-2-3 允许匿名用户访问

(3)允许匿名用户上传文件并可以创建目录,注意把注释号“#”去掉,保存退出,如图7-2-4所示。

图7-2-4 允许匿名用户上传并创建目录

(4)修改目录权限,创建一个公司上传用的目录,叫jimu,分配ftp用户所有,目录默认权限是755。

[root@localhost ~]# mkdir /var/ftp/jimu
[root@localhost ~]# ll -d /var/ftp/jimu
drwxr-xr-x. 2 root root 6 6月  22 22:02 /var/ftp/jimu
[root@localhost ~]# chown ftp /var/ftp/jimu
[root@localhost ~]# ll /var/ftp/jimu
总用量 0
[root@localhost ~]# ll -d /var/ftp/jimu
drwxr-xr-x. 2 ftp root 6 6月  22 22:02 /var/ftp/jimu

(5)修改目录权限,需要开启SELinux服务。

[root@localhost ~]# getenforce    #开启SELinux服务器

(6)reboot重启系统,查询SELinux运行状态,如图7-2-5所示。

图7-2-5 SELinux的运行状态

(7)使用getsebool -a |grep ftp命令可以找到ftp的bool值,然后更改getsebool -a是显示所有selinux的布尔值,通过管道,查找与ftp相关的,使用 setsebool -P allow_ftpd_anon_write on命令设置布尔值,如图7-2-6所示。

图7-2-6 设置布尔值

(8)准备修改上下文。

[root@localhost ~]# ls -Zd /var/ftp/jimu/
drwxr-xr-x. ftp root unconfined_u:object_r:public_content_t:s0 /var/ftp/jimu/
[root@localhost ~]# chcon -t public_content_rw_t  /var/ftp/jimu/
[root@localhost ~]# ls -Zd /var/ftp/jimu/
drwxr-xr-x. ftp root unconfined_u:object_r:public_content_rw_t:s0 /var/ftp/jimu/

7.2.3允许匿名用户上传、下载文件及创建目录

(1)权限修改之后,需要重启vsftpd服务器。

 systemctl restart vsftpd.service

(2)测试:匿名用户上传文件和建立新目录。这里需要注意如果出现ftp命令找不到的情况,需要使用yum命令来下载ftp客户端。

yum -y install ftp

之后就可以进行匿名用户上传文件和建立目录的操作:

[root@localhost ~]# ftp localhost
Trying ::1...
Connected to localhost (::1).
220 (vsFTPd 3.0.2)
Name (localhost:root): ftp             #匿名用户名
331 Please specify the password.
Password:                                 #密码:空
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||39545|).
150 Here comes the directory listing.
drwxr-xr-x    2 14       0               6 Jun 22 14:02 jimu
drwxr-xr-x    2 0        0               6 Jun 10  2014 pub
226 Directory send OK.
ftp> cd jimu                    
250 Directory successfully changed.
ftp> mkdir test                        #在jimu目录内,创建新目录test
257 "/jimu/test" created
ftp> put initial-setup-ks.cfg     #向jimu目录内上传本地文件
local: initial-setup-ks.cfg remote: initial-setup-ks.cfg
229 Entering Extended Passive Mode (|||29449|).
150 Ok to send data.
226 Transfer complete.
1098 bytes sent in 0.00871 secs (126.03 Kbytes/sec)
ftp> ls
229 Entering Extended Passive Mode (|||14666|).
150 Here comes the directory listing.
-rw-------  1 14  50    1098 Jun 25 10:46 initial-setup-ks.cfg
drwx------  2 14  50      6  Jun 25 10:22 test
226 Directory send OK.

7.3 任务2:Samba服务器安装与配置

大家知道通过FTP能上传下载文件,那么还有必要学Samba服务器吗?学完本节,相信大家会有答案。

Samba服务器实现了Windows系统中的SMB/CIFS文件共享协议的服务器功能。Samba服务器的Linux主机可以提供Windows文件共享服务,可作为Windows主机的服务器使用Samba的客户端软件实现了SMB/CIFS文件共享协议的客户端功能。在Linux主机中使用Samba客户端软件可以访问Windows主机中提供的共享文件。通过在Linux系统中使用Samba服务器软件和Samba客户端软件可以实现Linux主机与Windows主机高效的共享文件互访。

在Linux主机之间其实可以使用NFS服务实现文件共享,而且实现起来也十分方便。但由于现在企业网络中不可能只有Linux一种操作系统,Windows操作系统居多。在Windows主机之间使用Windows文件共享同样可以实现包括网络文件在内的系统资源的共享。如果想在Linux和Windows主机之间进行文件共享,使用Samba服务器是比较理想的解决方案。

7.3.1 Samba服务器的安装

季目公司的网络管理员小李要在Samba服务器上进行以下配置,为每个用户创建私有共享目录,为每个部门创建私有共享目录,为公司创建公共共享目录。

安装Samba相关软件

samba- common软件包中提供了Samba服务器和客户机中都必须使用的公共文件。

samba软件包中包括了Samba服务器程序的所有文件。

samba- client软件包中提供了Samba客户机的所有文件。

以上软件可以在安装Linux的时候选择安装,如没有安装需要自行挂载光盘安装,使用命令查看samba相关软件是否安装。

[root@localhost ~]#  rpm -qa|grep samba 
samba-libs-4.1.1-31.el7.x86_64
samba-common-4.1.1-31.el7.x86_64
用以上命令查看,发现Samba软件包没有安装,可以使用以下方法安装:
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[root@localhost mnt]# cd Packages
[root@localhost Packages]# ls samba* 
samba-4.1.1-31.el7.x86_64.rpm
samba-client-4.1.1-31.el7.x86_64.rpm
samba-common-4.1.1-31.el7.x86_64.rpm
samba-libs-4.1.1-31.el7.x86_64.rpm
samba-python-4.1.1-31.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh samba-4.1.1-31.el7.x86_64.rpm 
准备中...                    ################################# [100%]
正在升级/安装...
 1:samba-0:4.1.1-31.el7  ################################# [100%]

Samba服务器安装成功!

7.3.2 Samba服务器的配置

1.Samba服务器的文件

smb.conf文件默认存放在/etc/samba目录中,Samba服务在启动时会读取smb.comf文件中的内容,以决定如何启动、提供服务以及相应的权限设置共享目录、打印机和机器所属的工作组等各项细致的选项。

(1) 全局配置

Samba配置文件中的全局配置是对该台主机的配置,并不是指共享资源的配置,因此比较特殊,全局配置的配置项有很多,但大家掌握比较常用的即可。

全局配置的开始是由global声明的,下面就来看看全局配置中比较常用的配置项。

global

workgroup=MYGROUP #workgroup设置Samba服务器所在的工作组的名称,默认设置为“MYGROUP"。

server string=Samba Server #server string设置Samba服务器的说明文字,用于描述Samba主机。

log file=/var/log/samba% m.log #log file设置Samba服务器的日志文件,默认设置为/ var/log/samba%m.log”,表示所有设置文件都保存在“/var/log/samba/”目录中,使用Samba服务器的每个客户机的日志分别保存在与客户主机同名的“%m.log”文件中,“%m”变量表示客户端主机的名称。

max log size=50 #max log size设置日志文件的最大容量,默认为“50”,表示50KB;该设置项的数值单位是“KB"。

Security=user #security设置Samba服务器的缺省安全级别为“user”,表示需要经过Samba服务器的用户认证后才能够访问服务器中的资源。

关于security项的配置,其值说明如下:

share:表示用户不需要账户及密码即可登入Samba服务器。

user:表示由提供服务的Samba服务器负责检查账户及密码(是Samba默认的安全等级)。

server:表示检查账户及密码的工作指定由另一台Windows服务器或Samba服务器负责。

domain:表示指定Windows域控制服务器来验证用户的账号及密码。

(2) Samba用户

当大家把全局配置的security项设置为user时,会发现登录Samba服务器时提示输入用户名和密码,这时候应该输入哪个用户信息呢?是Linux的系统用户吗?不是的,这里应该输人Samba的用户,Samba可以使用文件或数据库来保存用户的账号信息,这样做也是为了保障系统的安全。注意这种用户只能用来登录Samba服务器,大大减少了服务器的安全隐患。

那么接下来我们一起学习怎么创建Samba用户。

① smbpasswd命令

语法: smbpasswd 选项 用户名

选项:-a添加一个 Samba用户

-d禁用一个 Samba用户,禁用后该用户将不能登录

-e把禁用后的Samba用户启用

-x 删除一个Samba用户

那么接下来创建一个叫做sambauser的Samba用户:

[root@localhost /]# smbpasswd -a sambauser
New SMB password:
Retype new SMB password:
Failed to add entry for user sambauser.

可以看到添加 Samba用户失败了,这是因为 Samba必须要依赖同名的系统用户,因为Linux系统中的文件只对系统用户有权限,而 Samba用户是没有的,所以必须要使用同名的系统账号身份访问Linux系统资源(文件和目录)。而当前系统中并没有一个叫做Sambauser的用户,所以就不能创建 Samba用户。

[root@localhost /]# useradd sambauser
[root@localhost /]# smbpasswd -a sambauser
New SMB password:
Retype new SMB password:
Added user sambauser.

创建成功了!这里注意并没有为sambauser这个系统账户设置密码,因为 Samba用户的口令和同名系统用户的口令是独立的,可以相同也可以不同,需要分别进行维护和更改。当Samba用户不需要登录Linux系统时,同名的系统用户账号就可不设置口令。

(3) 用户私有共享目录配置

当在Linux上面创建一个用户的时候,就会自动给这个用户创建一个家目录,这个家目录一般位于home目录下,那么这里的私有共享目录就是指把用户的家目录共享,由于用户对自己的家目录有完全控制权限,而其他用户没有权限,也就是说用户的家目录是只有这个用户才可以读写的目录,因此被称为用户私有共享目录。那么这种目录应该怎样配置呢?

先打开Samba的配置文件:vi /etc/samba/smb.conf。

homes

comment = Home Directories #comment用于设置共享的说明信息。

browseable = No #browseable设置为no表示所有Samba用户的宿主目录不能被看到,只有登录用户才能看到自己的宿主目录共享。这样设置可以加强Samba服务器的安全性。

writable = Yes #writable设置为yes表示用户可对该共享目录写入,设置用户对自己的宿主目录具有写权限是比较合理的。

(4) 配置公共共享目录

公共共享目录,顾名思义,也就是说任何Samba的用户都可以访问公共目录并对目录具有读写权限。还是用vi打开smb. conf文件,修改以下内容:

public

comment = Public Directory

path = /home/samba #公共共享目录的绝对路径。

public = Yes #public设置为yes表示该共享目录对于所有 Samba用户可见。

writable = Yes #writable设置为yes表示该共享目录对于用户可写配置文件写好了之后这个目录还不能作为一个公共目录,因为这个目录它本身是有权限的。

drwxr-xr-x 2 root root 1024 June 21 19:11 samba

可以看到这个目录本身对于其他用户是没有写权限的,如果大家用前面建立的 sambauser用户登录将不能对这个目录进行写操作,而sambauser用户对于这个目录是属于其他人的角色,所以可把这个目录的权限改一改:

root@localhost home# chmod o+w samba这样任何登录的Samba用户都可以进行读写了。这其实跟 Windows的共享权限和NTFS权限有点类似,它们需要共同起作用。

2.Samba服务器的配置

季目公司的小李要在Samba服务器上进行以下配置,为每个用户创建私有共享目录,为每个部门创建私有共享目录,为公司创建公共共享目录。

(1) 配置用户私有共享目录。

用vim打开Samba的配置文件smb.conf,修改以下内容:

homes

comment = Home Directories

browseable = No

writable = Yes

(2) 为每个部门配置共享目录。

小李先为每个部门的员工建立了Samba账号:

root@localhost /# useradd alex

root@localhost /# smbpasswd -a alex

New SMB password:

Retype new SMB password:

Added user alex.

修改smb.conf文件,为每个部门设置一个共享目录,如市场部设置sales目录:

sales

comment = sales department

path = /depts/sales

write list = +sales

其他部门可自行设置。

注意这个目录本身的权限,需要给针对组的权限部分添加一个写权限。

public

comment = Public Directory

path = /home/samba

public = Yes

writable = Yes

7.4任务3:Mail服务器安装与配置

邮件服务器是一种用来负责电子邮件收发管理的设备。也是目前互联网中最普遍的一项应用。通过电子邮件进行方便、快捷的信息交流,它比网络上的免费邮箱更安全和高效,因此一直是企业公司的必备设备。

邮件服务器的特点:1.多域邮件服务2.安全防护3.多语言4.远程监控和性能调整5.无限的6.可扩展能力

7.4.1 Mail服务器的安装

1.环境初始化

[root@mail ~]# rpm -q centos-release //查看系统版本 
centos-release-7-8.2003.0.el7.centos.x86_64
[root@localhost ~]# vi /etc/hostname //将主机名更改为邮件服务器域名mail.test.com
[root@localhost ~]# systemctl disable firewalld //禁止防火墙开机自启动
[root@localhost ~]# vi /etc/sysconfig/selinux //将未注释的SELINUX行的值改为disabled
SELINUX=disabled
[root@localhost ~]# vi /etc/fstab //编辑fstab配置文件,在最后一行添加如下:/dev/cdrom /mnt iso9660 ro 0 0 

将vmware连接的光盘镜像开机自动以只读挂载到/mnt目录下,如下图7-4-1所示。

图7-4-1光盘镜像的挂载
[root@localhost ~]# vi /etc/yum.repos.d/CentOS-Base.repo //编辑yum的配置文件,方便后续安装
[root@localhost ~]# reboot //重启让优化环境生效

2.搭建DNS环境域名解析,用于解析postfix地址

(1)安装DNS服务器

[root@mail ~]# yum install -y bind //安装DNS服务器
[root@mail ~]# vi /etc/named.conf //修改DNS主配置文件
listen-on port 53 { any; };
allow-query { any; }; //修改这两行的内容

(2)之后,修改子配置文件,命令如下。

[root@mail ~]# vi /etc/named.rfc1912.zones //修改子配置文件
zone "test.com" IN {
        type master;
        file "test.com.zone";
};
zone "79.168.192.in-addr.arpa" IN {
        type master;
        file "test.com.local";
};  //在最后添加一个正向和一个反向解析区域

(3)进入DNS服务器区域配置文件目录,命令如下。

[root@mail ~]# cd /var/named/ //进入DNS服务器区域配置文件目录
[root@mail named]# cp -p named.localhost test.com.zone
[root@mail named]# cp -p named.localhost test.com.local //复制模板区域配置文件为指定区域配置文件。保留源文件权限,确定属组为named

(4)编辑正向区域配置文件,如下图7-4-2所示。

[root@mail named]# vi test.com.zone 
图7-4-2 正向区域配置文件

(5)编辑反向区域配置文件,如下图7-4-3所示。

[root@mail named]# vi test.com.local 
图7-4-3 反向区域配置文件

(6)启动DNS域名解析服务器。

[root@mail named]# systemctl start named 
[root@mail named]# yum install -y bind-utils //安装nslookup命令测试dns能否解析成功
[root@mail named]# vi /etc/resolv.conf //给本机的DNS指向自己的dns服务器
nameserver 192.168.79.100
//解析服务器地址
[root@mail named]# nslookup mail.test.com  //正向解析 
Server:192.168.79.100
Address:192.168.79.100#53
Name:mail.test.com
Address: 192.168.79.100
[root@mail named]# nslookup 192.168.79.100  //反向解析 
Server:192.168.79.100
Address:192.168.79.100#53
100.79.168.192.in-addr.arpa name = mail.test.com.//成功

(7)安装安装postfix服务器并进行配置

一般Centos7是默认自动安装postfix服务器的。检查系统是否已经安装了postfix服务器,使用以下命令。

[root@mail named]# rpm -q postfix 
postfix-2.10.1-6.el7.x86_64

系统已经安装postfix服务器,检查postfix是否支持cyrus dovecot功能,如果不支持需重新安装更新的版本,使用如下命令。

[root@mail named]# postconf -a 
cyrus
dovecot

此时,postfix服务器安装成功,无须安装更新版本。

7.4.2 Mail服务器的配置

(1)编辑postfix的配置文件,查找并修改对应配置项。

[root@mail named]# vi /etc/postfix/main.cf 
myhostname = mail.test.com //本机主机名
mydomain = test.com //服务器域名
myorigin = $mydomain //初始域名
inet_interfaces = all //监听接口
inet_protocols = ipv4 //监听网络版本,可以不改
mydestination = myhostname,myhostname,mydomain //目标域
home_mailbox = Maildir/ //邮件目录,在用户家目录下
[root@mail named]# postfix check //检查配置文件是否有语法错误
[root@mail named]# systemctl start postfix //启动postfix服务器

(2)邮件服务器简单发信测试

[root@mail named]# groupadd mailusers //添加邮件账号组
[root@mail named]# useradd -g mailusers -s /sbin/nologin jack //用户jack不允许登录(通过mailusers可以连接)
[root@mail named]# passwd jack
[root@mail named]# useradd -g mailusers -s /sbin/nologin tom
[root@mail named]# passwd tom //添加jack、tom邮件服务测试账号
[root@mail named]# yum install -y telnet //安装远程登录插件,用于登录25端口测试
[root@mail named]# telnet mail.test.com 25 //远程登录25端口,如报错连接不上,重启postfix
Trying 192.168.79.100...
telnet: connect to mail.test.com

7.5 任务5:NFS服务器安装与配置

NFS (Network File System)即网络文件系统,是由Sun公司开发的一种通过网络方式共享文件系统的通用共享解决方案。目前NFS有三个版本,分别为NFSv2、NFSv3、NFSv4。NFSv2是一个古老的版本,但却被众多的操作系统所支持,这样它的兼容性会更好;NFSv3拥有更多的特点,包括更快的速度、更大的单个文件大小、更多便于排错的错误及成功信息、对TCP协议的支持等;NFSv4提供了有状态的连接,更容易追踪连接状态,增强了安全特性。CentOS 7版本默认使用版本4提供NFS网络文件系统共享服务,NFS监听在TCP 2049端口。

当两台计算机需要通过网络建立连接时,双方主机就一定需要提供一些基本信息,如:IP 地址、服务端口号等,当有100台客户端需要访问某台服务器时,服务器就需要记住这些客户端的IP地址以及相应的端口号等信息,而这些信息是需要程序来管理的。在Linux中,这样的信息可以由某个特定服务自己来管理,也可以委托给RPC (Remote Procedure Call)来帮助自己管理。RPC是远程过程调用协议,RPC协议为远程通信程序管理通信双方所需的基本信息,这样NFS服务就可以专注于如何共享数据,至于通信的连接以及连接的基本信息,则全权委托RPC管理,CentOS 7系统由rpcbind服务提供RPC协议的支持,目前NFSv4虽然不再需要与rpcbind直接交互,但rpc.mountd依然是NFSv4所必需的服务。所以,如果在CentOS 7平台上实现NFS共享,需要同时启动NFS与rpcbind服务。

所需软件包括:nfs-utils、rpcbind。

7.5.1 NFS服务器的安装

1.NFS服务所需软件

安装NFS服务,需要安装两个软件,分别是:

(1)RPC主程序:rpcbind

NFS其实可以被视为一个RPC服务,因为启动任何一个RPC服务之前,我们都需要做好port的对应 (mapping) 的工作才行,这个工作其实就是rpcbind这个服务所负责的。也就是说,在启动任何一个RPC服务之前,我们都需要启动rpcbind 才行。

(2)NFS主程序:nfs-utils

就是提供rpc.nfsd及rpc.mountd这两个NFS daemons与其他相关documents 与说明文件、执行文件等的软件。这个就是NFS服务所需要的主要软件。

2.NFS的相关文件:

(1)主要配置文件:/etc/exports

这是NFS的主要配置文件。该文件是空白的,有的系统可能不存在这个文件,主要手动建立。NFS的配置一般只在这个文件中配置即可。NFS服务器通过读取/etc/exports配置文件设定哪些客户端可以访问哪些NFS共享文件系统。

(2)NFS文件系统维护指令:/usr/sbin/exportfs

这个是维护NFS分享资源的指令,可以利用这个指令重新分享/etc/exports变更的目录资源、将NFS Server分享的目录卸除或重新分享。

(3)分享资源的登录档:/var/lib/nfs/*tab

在NFS服务器的登录文件都放置到/var/lib/nfs/目录里面,在该目录下有两个比较重要的登录档,一个是etab,主要记录了NFS所分享出来的目录的完整权限设定值;另一个xtab则记录曾经链接到此NFS服务器的相关客户端数据。

(4)客户端查询服务器分享资源的指令:/usr/sbin/showmount

这是另一个重要的NFS指令。exportfs 是用在NFS Server端,而showmount 则主要用在Client端。showmount可以用来察看NFS分享出来的目录资源。

3.服务端安装NFS服务

(1)第一步:安装NFS和rpc。

[root@localhost ~]#  yum install -y  nfs-utils  #安装nfs服务
[root@localhost ~]# yum install -y rpcbind  #安装rpc服务

(2)第二步:启动服务和设置开机启动

[root@localhost ~]# systemctl start rpcbind    #先启动rpc服务
[root@localhost ~]# systemctl enable rpcbind   #设置开机启动
[root@localhost ~]# systemctl start nfs-server nfs-secure-server      
#启动nfs服务和nfs安全传输服务
[root@localhost ~]# systemctl enable nfs-server nfs-secure-server
[root@localhost /]# firewall-cmd --permanent --add-service=nfs
success   #配置防火墙放行nfs服务
[root@localhost /]# firewall-cmd  --reload 
success

(3)第三步:配置共享文件目录,编辑配置文件。

首先创建共享目录,然后在/etc/exports配置文件中编辑配置即可。

[root@localhost /]# mkdir /public
#创建public共享目录
[root@localhost /]# vi /etc/exports
/public 192.168.79.100/24(ro)
/protected 192.168.79.100/24(rw)
[root@localhost /]# systemctl reload nfs 
#重新加载NFS服务,使配置文件生效

这里需要提醒一下大家,在启动NFS服务之前,首先要启动RPC服务,否则NFS服务就无法向RPC服务区注册。另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。特别注意:一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行systemctl reload nfs或exportfs –rv即可使修改的/etc/exports生效。

最简单的NFS配置可以仅给定一个共享路径与一个客户端主机,而不指定选项,因为没有选项时,NFS将使用默认设置,而默认属性为ro、sync、wdelay、no root squasho具体的NFS属性及其对应的含义见表7-1,查看exports的帮助文档可以找到很多服务器配置模板。

表7-1 NFS属性及其对应的含义

以上选项中,ro与rw比较容易理解,用来定义客户端访问共享时可以获得的权限是只读 访问还是可读写访问。计算机对数据进行修改时会先将修改的内容写入快速的内存,随后才会慢慢写入慢速的硬盘设备中,async选项允许NFS服务器在没有完全把数据写入硬盘前就返回成功消息给客户端,而此时数据实际还存放在内存中,但客户端则显示数据己经写入成功。注意,该选项仅影响操作消息的返回时间,并不决定如何进行写操作,async选项将确保在数据真正写入存储设备后才会返回成功信息。wdelay为延迟写入选项。也就是说,它决定了先将数据写入内存,再写入硬盘,然后将多个写入请求合并后写入硬盘,这样可以减少对硬盘I/O的次数,从而优化性能,该选项可以优化NFS性能,但有可能导致非正常关闭NFS时数据丢失情况的发生。与此相反的选项是no wdelay,但该选项与async选项一起使用时将不会生效,因为async是基于wdelay实现对客户端的一种响应功能。默认情况下,NFS会自动屏蔽root用户的权限,root_squash使得客户端使用root账号访问NFS时,服务器系统默认会自动将root映射为服务器本地的匿名账号,使用no_root_squash可以防止这种映射而保留root权限,all_squash选项则可以屏蔽所有的账户权限,将所有的用户对NFS的访问自动映射为服务器本地的匿名账户。默认情况下,普通账号的权限是保留的,也就是没有进行squash操作。

7.5.2 NFS客户端挂载配置

(1)第一步:使用showmount命令查看nfs服务器共享信息。输出格式为“共享的目录名称 允许使用客户端地址”。

[root@localhost /]# showmount -e 192.168.79.100
Export list for 192.168.79.100:
/protected 192.168.79.100/24
/public    192.168.79.100/24

showmount命令的用法如下表7-2所示:

表7-2 showmount命令的用法

(2)第二步,在客户端创建目录,并挂载共享目录。

[root@localhost ~]# mkdir /mnt/public
[root@localhost ~]# mkdir /mnt/data
[root@localhost ~]# vim /etc/fstab 
#在该文件中挂载,使系统每次启动时都能自动挂载
	192.168.79.100:/public  /mnt/public       nfs    defaults 0 0
192.168.79.100:/protected /mnt/data      nfs    defaults  0 1
[root@localhost ~]# mount -a   #使文件/etc/fstab生效

(3)第三步:检查,共享文件全部挂载到磁盘上。

使用df-Th命令检查如图7-6-1所示。

图7-6-1 共享文件挂载成功

使用df-a命令检查如图7-6-2所示。

图7-6-2 共享文挂载成功

7.6 任务6:rsync工具的使用

7.6.1 rsync工具简介

Rsync(remote sync)是UNIX及类UNIX平台下一款神奇的数据镜像备份软件,它不像FTP或其他文件传输服务那样需要进行全备份,Rsync可以根据数据的变化进行差异备份,从而减少数据流量,提高工作效率。你可以使用它进行本地数据或远程数据的复制,Rsync可以使用SSH安全隧道进行加密数据传输。Rsync服务器端定义源数据,Rsync客户端仅在源数据发生改变后才会从服务器上实际复制数据至本地,如果源数据在服务器端被删除,则客户端数据也会被删除,以确保主机之间的数据是同步的。Rsync使用TCP 873端口。

rsync的特性:

(1)支持拷贝特殊文件如链接文件,设备等。

(2)可以有排除指定文件或者目录同步的功能,相当于打包命令tar的排除功能。

(3)可以做到保持原文件或者目录的权限,时间,软硬链接,属组,主等所有属性均不改变。

(4)可以实现增量备份,既只同步发生变化的数据。

(5)可以使用rcp,rsh,ssh等方式来配合传输文件。

(6)可以通过socket传输文件和数据。

(7)支持匿名的认证模式传输。

7.6.2 rsync工具的使用

使用CentOS 7系统安装部署Rsync非常方便,安装光盘以及YUM源中都提供了rsync软件包,使用YUM方式安装即可。下面的案例演示了如何共享/common目录,为此,我们需要创建/common目录,并复制一些测试文件存放在该目录下。本例需要手动创建配置文件/etc/rsync.conf,该文件具体的语法格式在后面有详细的描述。

使用以下命令,先检查一下系统有没有安装包。

[root@localhost /]# rpm -qa | grep rsync
rsync-3.0.9-15.el7.x86_64

使用yum命令更新一下安装包,更新到目前版本。

[root@centos7 # yum -y install rsync
[root@localhost /]#  rpm -qa | grep rsync
rsync-3.1.2-10.el7.x86_64

创建/common共享目录,复制部分测试文件存放在该目录下。

[root@localhost /]# mkdir /common; 
[root@localhost /]# cp /etc/init.d/* /common/

创建配置文件/etc/rsync.conf,命令如下。

[root@localhost /]# vim /etc/rsync.conf
#/etc/rsyncd.conf
#设置服务器信息提示文件名称,在该文件中编写提示信息 motd file = /etc/rsyncd.motd
#开启Rsync数据传输日志功能 transfer logging = yes
#设置日志文件名称,可以通过format参数设置日志格式
log file = /var/log/rsyncd.log
#设置Rsync进程号保存文件名称 pid file = /var/run/rsynod.pid #设置锁文件名称
lock file = /var/run/rsync.lock #设置服务器监听的端口号,默认为873
port = 873
#设置服务器所监听网卡接口的IP地址,这里服务器的地址为192.168.79.100 address = 192.168.79.100
#设置进行数据传输时所使用的账户名称或ID号,默认使用nobody
uid = nobody
#设置进行数据传输时所使用的组名称或GID号,默认使用nobody
gid = nobody
#设置user chroot为yes后,:rsync会首先进行chroot设置,将根映射到path参数   
#路径下,对客户 #端而言,系统的根就是path参数所指定的路径。但这样做需要root
#权限,并且在同步符号
#连接资料时仅会同步名称,而内容将不会同步。
use chroot = no
#是否允许客户端上传数据,这里设置为只读。
read only = yes
#设置并发连接数,0代表无限制。超岀并发数后,如果依然有客户端连接请求,则将会
#收到稍后重试的提示消息
max connections = 10
#模块,Rsync通过模块定义同步的目录,模块以[name]的形式定义,这与Samba定义共
#享目录是一样的效果。在Rsync中也可以定义多个模块
[common]
#comment定义注释说明字串
comment = Web content
#同步目录的真实路径通过path指定
path = /common
#忽略-些10错误
ignore errors
#exclude可以指定例外的目录,即将common目录下的某个目录设置为不同步数据
#exclude = test/
#设置允许连接服务器的账户,账户可以是系统中不存在的用户
auth users = tom,jerry
#设置密码验证文件名称,注意该文件的权限要求为只读,建议权限为600,仅在设置auth   
#users
#参数后有效
secrets file = /etc/rsyncd.secrets
#设置允许哪些主机可以同步数据,可以是单个IP,也可以是网段,多个工P与网段之间
#使用空格分隔
hosts allow=192.168.0.0/255.255.255.0
#设置拒绝所有(除hosts allow定义的主机外)
hosts deny=*
#客户端请求显示模块列表时,本模块名称是否显示,默认为true
list = false

接下来,通过echo的方式创建密码文件/etc/rsyncd.secrets,在该文件中输入两个账户:tom账户的密码是pass,jerry账户的密码是111。需要注意的是,密码文件不可以对所有的人开放可读权限,为了安全,建议设置权限为600。创建服务器提示信息文件并向该文件中导入欢迎词。由于Rsync默认不是开机启动服务,为了实现开机启动Rsync服务,我们可以通过echo将rsync -daemon追加至开机启动文件/etc/rc.local。最后通过设置防火墙开启873端口的入站数据请求,或者直接关闭防火墙。部分命令如下。

[root@localhost /]# echo "tom:pass" > /etc/rsyncd. secrets
[root@localhost /]# echo "jerry:111" > /etc/rsyncd.secrets
[root@localhost /]# chmod 600 /etc/rsyncd.secrets
[root@localhost /]# echo "welcome to access" >/etc/rsyncd.motd
[root@localhost /]# rsync --daemon
[root@localhost /]# echo "/usr/bin/rsync --daemon" > /etc/rc.local

本章小结

计算机网络的基本功能是在计算机间实现信息和资源共享,文件共享可以说是最基本、最普遍的一种网络服务。本章以“重庆季目有限公司”的应用服务器管理为引导,在介绍相关背景知识的基础上,重点以Centos7.0平台讲解了FTP服务器的安装与配置、Samba服务器的安装与配置、Mail服务器的安装与配置以及NFS服务器安装与配置。

本章习题

一、单项选择题

1.以下文件中,不属于 vsftpd的配置文件的是( )。

A. /etc/vsftpd/sftp. conf

B. etc/vsftpd/vsftpd. Conf

C. / etc/vsftpd. ftpusers

D. /etc/vsftpd user list

2.安装 vsftpd FTP服务器后,若要启动该服务,则正确的命令是( )。

A. server vsftpd start

B. service vsftd restart

C. service vsftd start

D./etc/rc. d/init. d/vsftpd restart

二、多项选择题

1.vsftp支持哪几种用户访问?( )

A.本地用户

B.虚拟用户

C.匿名用户

D.真实用户