NFS服务器、SAMBA服务器、FTP服务器

一、NFS服务器

1. NFS概念
NFS是Network File System(网络文件系统)。主要功能是通过网络让不同的服务器之间可以共享文件或者目录。NFS客户端一般是应用服务器(比如web,负载均衡等),可以通过挂载的方式将NFS服务器端共享的目录挂载到NFS客户端本地的目录下。

2. NFS工作原理
①启动RPC服务
②启动NFS服务
③客户端请求NFS服务
④RPC把端口和IP地址给客户端(NFS客户端拿着端口和地址请求服务挂载文件或者目录传输)

3. NFS协议
NFS在文件传送过程中依赖与RPC(远程过程调用)协议。
NFS本身是没有提供信息传送的协议和功能的,但是能够用过网络进行图片,视频,附件等分享功能。只要用到NFS的地方都需要启动RPC服务,不论是NFS的服务端还是客户端。
4. NFS端口
TCP 111 2049

5.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服务器端的端口信息,就会以实际端口进行数据的传输了。

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

练习:
#NFS服务器安装及配置
1.关闭防火墙&Selinux

[root@c66 ~]# systemctl stop firewalld
[root@c66 ~]# setenforce 0
[root@c66 ~]# getenforce 
Permissive
[root@c66 ~]# 

2.安装NFS服务器
#NFS服务端rcpbind,rfc为nfs-utils

[root@c66 ~]# mount /dev/sr0 /media/
mount: /dev/sr0 is write-protected, mounting read-only
[root@c66 ~]# yum install rpcbind nfs-utils -y
Loaded plugins: fastestmirror
c7-media                                             | 3.6 kB     00:00     
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package nfs-utils.x86_64 1:1.3.0-0.48.el7 will be installed
--> Processing Dependency: libtirpc >= 0.2.4-0.7 for package: 1:nfs-utils-1.3.0-0.48.el7.x86_64
--> Processing Dependency: gssproxy >= 0.7.0-3 for package: 1:nfs-utils-1.3.0-0.48.el7.x86_64
......
Complete!

3.配置NFS服务
3.1 NFS服务器上建立NFS共享目录

[root@c66 ~]# mkdir /nfs_dir
[root@c66 ~]# chmod -Rf 777 /nfs_dir/

3.2 NFS服务的配置文件

#/etc/exports #nfs配置文件,默认为空!!!
#/nfs_dir共享给本网段所有主机,且拥有读写权限,在将数据写入到NFS服务器的硬盘中后才会结束操作,最大限度保证数据不丢失。

[root@c66 ~]#vi /etc/exports
/nfs_dir 192.168.163.143 (rw,sync,root_squash)

exports配置常用参数

参数 含义
ro 只读
rw 读写
root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

3.3 启动NFS服务

[root@c66 ~]# systemctl restart rpcbind 
[root@c66 ~]# systemctl enable rpcbind
[root@c66 ~]# systemctl start nfs-server 
[root@c66 ~]# systemctl enable nfs-server

3.4 客户端测试
#showmount,主要使用命令来查询共享信息。此处测试最好在其它机器测试

[root@c66 ~]#showmount -e 192.168.163.143
Export list for 192.168.163.143:
/nfs_dir 192.168.163.143(everyone)
[root@c66 ~]#mount -t nfs 192.168.163.143:/nfs_dir /mnt

#如果想要开机挂载,请编辑 /etc/fstab文件

二、SAMBA服务器

1. SAMBA概念
FTP文件传输服务可以让主机之间的文件传输变得简单方便,但是FTP协议的本质是传输文件,而非共享文件,因此要想通过客户端直接在服务器上修改文件内容还是一个问题。微软公司和英特尔公司共同制定了SMB(Server Messages Block,服务器消息块)协议,旨在解决局域网内的文件或打印机等资源的共享问题。
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。 通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
2. SAMBA工作原理
①协议协商
客户端在访问Samba服务器时,发送negprot指令数据包,告知目标计算机其支持的SMB类型。Samba服务器根据客户端的情况,选择最优的SMB类型,并做出回应;
②建立连接
当SMB类型确认后,客户端会发送session setup指令数据包,提交帐号和密码,请求与Samba服务器建立连接,如果客户端通过身份验证,Samba服务器会对session setup报文作出回应,并为用户分配唯一的UID,在客户端与其通信时使用。
③访问共享资源
客户端访问Samba共享资源时,发送tree connect指令数据包,通知服务器需要访问的共享资源名,如果设置允许,Samba服务器会为每个客户端与共享资源连接分配TID,客户端即可访问需要的共享资源。
③断开连接
共享使用完毕,客户端向服务器发送tree disconnect报文关闭共享,与服务器断开连接
3. SAMBA工作协议
Samba服务功能强大,这与其通信基于SMB协议有关。SMB不仅提供目录和打印机共享,还支持认证、权限
设置。在早期,SMB运行于NBT协议(NetBIOS over TCP/IP)上,使用UDP协议的137、138及TCP协议的
139端口;后期SMB经过开发,可以直接运行于TCP/IP协议上,使用TCP协议的445端口。
Samba在windows下使用的是NetBIOS协议,如果你要使用Linux下共享出来的文件,请确认你的windows系
统下是否安装了NetBIOS协议
4. SAMBA端口
TCP 139/445,UDP 137/138

练习:
1.关闭防火墙&Selinux

[root@c66 ~]#systemctl stop firewalld
[root@c66 ~]#setenforce 0
[root@c66 ~]#getenforce
Permissive
[root@c66 ~]#

2.安装SAMBA服务器及客户端
#samba服务器,samba-client客户端

[root@c66 ~]#yum install samba -y
Loaded plugins: fastestmirror
c7-media                                             | 3.6 kB     00:00     
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package nfs-utils.x86_64 1:1.3.0-0.48.el7 will be installed
--> Processing Dependency: libtirpc >= 0.2.4-0.7 for package: 1:nfs-utils-1.3.0-0.48.el7.x86_64
......
Complete!
[root@c66 ~]#yum install samba-client -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package samba-client.x86_64 0:4.6.2-8.el7 will be installed
--> Processing Dependency: libsmbclient = 4.6.2-8.el7 for package: samba-client-4.6.2-8.el7.x86_64
--> Processing Dependency: libsmbclient.so.0(SMBCLIENT_0.1.0)(64bit) for package: samba-client-4.6.2-8.el7.x86_64
--> Processing Dependency: libsmbclient.so.0()(64bit) for package: samba-client-4.6.2-8.el7.x86_64
--> Processing Dependency: libarchive.so.13()(64bit) for package: samba-client-4.6.2-8.el7.x86_64
--> Running transaction check
---> Package libarchive.x86_64 0:3.1.2-10.el7_2 will be installed
---> Package libsmbclient.x86_64 0:4.6.2-8.el7 will be installed
--> Finished Dependency Resolution
......
Complete!

3.SAMBA服务器配置文件
/etc/samba/smb.conf #SAMBA主配置文件!!!

4.配置共享
4.1 创建共享资源的账户
#Samba服务程序默认使用的是用户口令认证模式。
#不同之处,只有建立账户信息数据库之后,才能使用用户口令认证模式。
#pdbedit命令用于管理SMB服务程序的账户信息数据库。在第一次把账户信息写入到数据库时需要使用-a参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。

[root@c64 ~]# useradd alice
[root@c64 ~]# id alice
uid=1000(alice) gid=1000(alice) groups=1000(alice)
[root@c64 ~]# pdbedit -a -u alice
new password:
retype new password:
Unix username:        alice
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-1196000516-1503558895-1724099395-1000
Primary Group SID:    S-1-5-21-1196000516-1503558895-1724099395-513
Full Name:            
Home Directory:       \\c64\alice
HomeDir Drive:        
Logon Script:         
Profile Path:         \\c64\alice\profile
Domain:               C64
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          Wed, 06 Feb 2036 23:06:39 CST
Kickoff time:         Wed, 06 Feb 2036 23:06:39 CST
Password last set:    Mon, 26 Nov 2018 16:55:55 CST
Password can change:  Mon, 26 Nov 2018 16:55:55 CST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@c64 ~]# 

4.2 创建共享资源文件目录

[root@c64 ~]# mkdir /home/share
[root@c64 ~]# chown -Rf alice:alice /home/share/

4.3 修改Samba主配置文件,修改共享信息

[root@c64 ~]#vi /etc/samba/smb.conf
[global] #全局配置名称
	workgroup = MYGROUP #工作组名称
	server string = Samba Server Version %v #samba信息,参数%v为显示SMB版本号
	log file = /var/log/samba/log.%m #日志存放位置与名称,%m为来访的主机名
	max log size = 50 #日志最大容量50kb
	security = user #安全验证方式,见下介绍
	passdb backend = tdbsam #用户后台的类型,见下介绍
	load printers = yes #共享打印机设备
	cups options = raw #打印机的选项
[share] #局部共享
	comment = share info... #提示信息
	path = /home/share #共享目录
	public = no #关闭所有人可见
	writable = yes #可写
[root@c64 ~]#systemctl restart smb
[root@c64 ~]#systemctl enable smb

#安全验证方式介绍:
#share:来访主机无需验证口令;比较方便,但安全性很差
#user:需验证来访主机提供的口令后才可以访问;提升了安全性
#server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
#domain:使用域控制器进行身份验证
#用户后台的类型介绍:
#smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码
#tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
#ldapsam:基于LDAP服务进行账户验证
4.4 windows测试共享
开始—>运行—>\192.168.5.153—>输入用户名密码—>登录成功
NFS服务器、SAMBA服务器、FTP服务器_第1张图片
NFS服务器、SAMBA服务器、FTP服务器_第2张图片
创建一个文本文件,写入信息并保存测试
NFS服务器、SAMBA服务器、FTP服务器_第3张图片
#由于Windows系统的缓存原因,下次在登陆时仍保存上一次的用户名,可清除Samba登陆信息,命令 #net use * /del /y
4.5 linux测试共享
#linux连接samba

[root@c64 ~]# smbclient //192.168.163.143/share -U alice     
Enter SAMBA\alice's password: 
Domain=[C66] OS=[Windows 6.1] Server=[Samba 4.6.2]
smb: \> ls
  .                                   D        0  Mon Nov 26 17:13:39 2018
  ..                                  D        0  Sun Nov 25 17:26:41 2018
  zt.txt                              A       14  Mon Nov 26 17:13:53 2018

                18655232 blocks of size 1024. 17637788 blocks available
smb: \> 

#出现问题
#NT_STATUS_IO_TIMEOUT 需要在服务端做ip 域名的绑定和/etc/resolv.conf有关
4.6 SAMBA挂载
#客户端安装支持文件共享服务的软件包cifs-utils

[root@c64 ~]# yum install cifs-utils -y
[root@c64 ~]# yum install cifs-utils -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package cifs-utils.x86_64 0:6.2-10.el7 will be installed
--> Finished Dependency Resolution
......
Complete!
#Samba的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中
vi /etc/samba/auth.smb
[root@c64 ~]# mount -a
[root@c64 ~]#vi /etc/samba/auth.smb   #这个文件没有,需要创建
username=alice
password=123456
domain=share
[root@c64 ~]# chmod -Rf 600 auth.smb
[root@c64 ~]#mkdir share     #创建挂载目录
[root@c64 ~]# vi /etc/fstab 
//192.168.5.153/share /share cifs credentials=/etc/samba/auth.smb 0 0
[root@c64 ~]#mount -a
[root@c64 ~]cat /share/zt.txt
hello,Linux!

三、FTP服务器

1. FTP服务器概念
文件传输协议(File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。专门用来传输文件的协议。
2. FTP服务器工作原理
FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数。
3. FTP服务器协议
FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据传输链路的主机。FTP协议有下面两种工作模式:
主动模式:FTP服务器主动向客户端发起连接请求
被动模式:FTP服务器等待客户端发起连接请求(FTP的默认工作模式)

4.VSFTP服务器的安装及配置

4.1.关闭防火墙&Selinux

[root@c64 ~]# systemctl stop firewalld
[root@c64 ~]# setenforce 0
[root@c64 ~]# getenforce

4.2.安装VsFTP服务器及客户端
#在linux下客户端为ftp,vsftpd服务器端

[root@c64 ~]# yum install vsftpd ftp -y
......
Running transaction
  Installing : vsftpd-3.0.2-22.el7.x86_64                               1/2 
  Installing : ftp-0.17-67.el7.x86_64                                   2/2 
  Verifying  : ftp-0.17-67.el7.x86_64                                   1/2 
  Verifying  : vsftpd-3.0.2-22.el7.x86_64                               2/2 

Installed:
  ftp.x86_64 0:0.17-67.el7           vsftpd.x86_64 0:3.0.2-22.el7          

Complete!

4.3.匿名访问模式配置
#开放匿名用户的上传、下载文件的权限,以及让匿名用户创建、删除、更名文件的权限
#不建议在生产环境使用

[root@c64 ~]# vi /etc/vsftpd/vsftpd.conf     #vsftpd主配置文件!!!
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
[root@c64 ~]# systemctl restart vsftpd
[root@c64 ~]# systemctl enable vsftpd

4.4.测试

[root@c64 ~]# ftp 192.168.163.205
Connected to 192.168.163.205 (192.168.163.205).
220 (vsFTPd 3.0.2)
Name (192.168.163.205:root): ftp     #用户此处可填写ftp/anonymous
331 Please specify the password.   
Password:     #密码为空
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /pub     #切换目录,实际目录为/var/ftp/pub
250 Directory successfully changed.
ftp> mkdir dir
550 Create directory operation failed.  #无法创建,是什么问题,怎么解决?

解决方法:

[root@c64 ~]# ls -ld /var/ftp/pub/
drwxr-xr-x. 2 root root 6 Aug  3  2017 /var/ftp/pub/
[root@c64 ~]# chown -Rf ftp /var/ftp/pub/
[root@c64 ~]# ftp 192.168.163.205        
Connected to 192.168.163.205 (192.168.163.205).
220 (vsFTPd 3.0.2)
Name (192.168.163.205:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /pub
250 Directory successfully changed.
ftp> mkdir dir
257 "/pub/dir" created
ftp> rename dir dir1
350 Ready for RNTO.
250 Rename successful.
ftp> ls
227 Entering Passive Mode (192,168,163,205,212,55).
150 Here comes the directory listing.
drwx------    2 14       50              6 Nov 28 08:01 dir1
226 Directory send OK.
ftp> rmdir dir1
250 Remove directory operation successful.
ftp> ls
227 Entering Passive Mode (192,168,163,205,167,19).
150 Here comes the directory listing.
226 Directory send OK.
ftp>

4.5.本地用户模式

[root@c64 ~]#vi /etc/vsftpd/vsftpd.conf      #vsftpd主配置文件!!!
anonymous_enable=NO
[root@c64 ~]#systemctl restart vsftpd

4.6.测试

[root@c64 ~]# ftp 192.168.163.205
Connected to 192.168.163.205 (192.168.163.205).
220 (vsFTPd 3.0.2)
Name (192.168.163.205:root): root
530 Permission denied.
Login failed.     #登录失败?
ftp> 

解决方法:
vsftpd服务所在目录中存放着两个用户名单ftpusers,user_list,出于安全原因,root默认不允许登录,编辑这两个文件注释root即可。同时在新创建一个用户,便于测试。

[root@c64 ~]# vi /etc/vsftpd/ftpusers 
# Users that are not allowed to login via ftp
#root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

[root@c64 ~]# vi /etc/vsftpd/user_list 
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
#root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

测试:

[root@c64 ~]# systemctl restart vsftpd
[root@c64 ~]# ftp 192.168.163.205
Connected to 192.168.163.205 (192.168.163.205).
220 (vsFTPd 3.0.2)
Name (192.168.163.205:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

你可能感兴趣的:(Linux云计算)