NFS与FTP服务搭建与配置

 

14.1 NFS介绍
14.2 NFS服务端安装配置
14.3 NFS配置选项
14.4 exportfs命令
14.5 NFS客户端问题
15.1 FTP介绍
15.2/15.3 使用vsftpd搭建ftp
15.4 xshell使用xftp传输文件
15.5 使用pure-ftpd搭建ftp服务
扩展
vsftp使用mysql存放虚拟用户并验证 http://www.aminglinux.com/bbs/thread-342-1-1.html
ftp的主动和被动模式  http://www.aminglinux.com/bbs/thread-961-1-1.html

 


一、NFS介绍
1、NFS简介

NFS,Network File System的缩写。网络文件系统,即通过网络,对在不同主机上的文件进行共享。
NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本,更新比较慢其实4.1是从2010年就开始使用了。
NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写。NFS服务需要借助于RPC协议实现通信
NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致

d7d3e1df77a105cb913dcd842636bf05b65.jpg

2、NFS原理:

  • 首先:NFS包括两部分,服务端及客户端
  • 由于NFS服务功能很多,会有很多端口,这些端口还有可能不固定,那么客户端就无法与服务器进行通信,因为程序间通信必须通过端口(tcp/udp都是端到端通信),那么就需要一个中间的桥接机制,RPC进程即充当这样一个角色,RPC的端口是一定的(111),当NFS启动时,会向RPC进行注册, 那么客户端PRC就能与服务器RPC进行通信, 从而进行文件的传输。
  • 当客户端用户打开一个文件或目录时,内核会判断,该文件是本地文件还是远程共享目录文件,如果是远程文件则通过RPC进程访问远程NFS服务端的共享目录,如果是本地文件,则直接打开。
  • 为了更好的并发,RPC进程及NFS进程都有多个。

5d42dd5bcabffeff1c33891677cb596b500.jpg

二、NFS服务端安装配置

用两台机器做实验,一台作为服务端(001 192.168.83.3),一台作为客户端(002 192.168.83.33);
在两台机器上安装:    yum install -y nfs-utils rpcbind

在001上,编辑配置文件 :vim /etc/exports

写入以下语句

/home/nfstestdir 192.168.83.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

语句释义:

  • /home/nfstestdir :共享的目录

  • rw: 读写

  • ro: 只读

  • sync: 同步模式,内存数据实时写入磁盘

  • async :非同步模式

  • no_root_squash: 客户端挂载NFS共享目录后,root用户不受约束,权限很大

  • root_squash: 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户

  • all_squash:客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户

  • anonuid/anongid: 和上面几个选项搭配使用,定义被限定用户的uid和gid

  • 192.168.83.0/24:为客户端的网段;

创建nfstestdir要分享的目录,并给予777权限

4e83100565aa236b039b13026a2c0291dc4.jpg

 开启nfs服务 :    systemctl start nfs

查看监听端口,端口111为rpcbind默认端口     

a55a2815018cd6a49fa502fa45709f244ae.jpg

设置开机启动:systemctl enable nfs

8a7b33f87ad0cc49c4815dbd427aea145e4.jpg

三、NFS配置选项

1、挂载NFS

showmount -e 192.168.83.3 //该ip为NFS服务端ip

如果没有出现共享目录,有下面可能,注意排查:

  • 1、两者通信问题

  • 2、把两者的防火墙关闭

此处关闭服务端和客户端的防火墙:     systemctl stop firewalld

selinux也要关掉   

b07efcdbcbc780437f361563d4d01635b79.jpg0af192456e5422dfce49208dfbdaa472744.jpg

f75286d7af3a0109585059cec039c742172.jpg

showmount -e 192.168.83.3 //该ip为NFS服务端ip

1250a8f1b1a461a86a538abf735c82ca53d.jpg

开始挂载:    

 mount -t nfs 192.168.83.3:/home/nfstestdir /mnt

b0fc15eea3d1a0c2ae791099135b29d2821.jpg

在客户端挂载目录/mnt/下,就是NFS共享的目录,创建一个测试文件tobe.php

eb1791118a0bf0c23fb7a1b58eb63b05a73.jpg

在服务端的共享目录中可以看到

873571beab0f1942cb5eaefe64f1de93ec0.jpg

四、exportfs命令

看下图:假如A的NFS服务停掉了,但是B和C还在挂载着A分享的分区,这就无法正常工作了,由于B和C上面的进程是d状态(不可中断进程,在ps一节中学习到的),一旦A停止了,B和C一定会出问题,无法服务,既不可以重启,也不可以关闭,就会把系统整挂掉。所以NFS一定不可以随便重启。 如果必须重启怎么办?先把B和C上面的目录卸载下来。

b59aebefc5c3fe84d8bb601a0f8a8992b64.jpg

 如果挂载了多台机器,使用exportps

exportps命令常用选项:

-a 全部挂载或者全部卸载
 -r 重新挂载
 -u 卸载某一个目录
 -v 显示共享目录
 以下操作在服务端上
 vim /etc/exports //增加
 /tmp/ 192.168.83.33/24(rw,sync,no_root_squash)
 exportfs -arv //不用重启nfs服务,配置文件就会生效

在服务端001上:        

exportfs -arv

这样就可以让配置文件重新生效,不需要再次重启nfs服务,也不会对客户端造成之前所说的错误

eb8d14dbf559a1ad1eb0991b208506e61ae.jpg

编辑配置文件,增加一个共享的目录

vim /etc/exports

/tmp/ 192.168.83.33/24(rw,sync,no_root_squash)

用命令:exportfs -arv 直接生效,不用重启NFS服务
60a281b00470a7b3aa697cffeee98b73d4b.jpg

使用客户端测试;

查看服务端共享目录:showmount -e 192.168.83.3

7cddb035cd47ffd4468a3b18074bedfd6d4.jpg

挂载     mount -t nfs 192.168.83.3:/tmp /mnt

因为之前挂载了,需要先取消挂载

06a9d3b27429d4b9e14dd262db677133c56.jpg

在客户端mnt下创建一个测试文本

新检测试文本1212.txt,查看其gid和uid都为root

26c4ec8b7f8849f2f8b5e0f6005aa121e40.jpg

在服务端001下

查看/tmp目录下的1212.txt测试文本,其uid和gid都为root

09c0c76139e7fac7cf8a1e65fc4d7cc0c4b.jpg

五、NFS客户端问题

注意:NFS 4版本会有该问题

在客户端挂载共享目录且权限设置为no_root_squash,不管是root用户还是普通用户,创建新文件时属主、属组为nobody , 这个不是设置错误,是软件本身自带的BUG。

解决方案:

方案1: 在客户端挂载的时候加上 -o nfsvers=3,其目的是指定nfs使用3版本,

mount -t nfs -o,nfsvers=3 192.168.83.3:/tmp /mnt   需要卸载

mount -t nfs -oremount,nfsvers=3 192.168.83.3:/tmp /mnt        -oremount,nfsvers=3,不卸载使用remount(重新加载),-oremount:-o与remount中间看情况是否要加空格

dcd9c9b1acdca3a7878fba7cd670453703d.jpg

方案2:在服务端和客户端配置:

vim /etc/idmapd.conf

把“#Domain = local.domain.edu” 改为 “Domain = xxx.com” (这里的xxx.com,看情况可以自定义),然后再重启rpcbind服务

六、FTP介绍

我们之前传输文件所用的是rz,sz命令,可以简单明了的就把我们所需的文件下载或者上传。但是有个缺陷,不可以上传或者下载大体积的文件。FTP就可以解决这个问题! 
FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。
FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。 
小公司用的多,大企业不用FTP,因为不安全,通常使用GitHub。

七、使用vsftpd搭建ftp服务

1、配件相关信息

centos上自带的FTP服务软件vsftpd,默认没有安装;需要用yum安装

yum install -y vsftpd

安装后,不用配置,可以直接使用,默认支持使用系统账号登录,但是因为安全原因,需要建立账号体系

useradd -s /sbin/nologin virftp            //创建虚拟用户virftp
vim /etc/vsftpd/vsftpd_login               //创建虚拟用户的密码文件

vim /etc/vsftpd/vsftpd_login内容如下,奇数行为用户名,偶数行为密码,多个用户就写多行

tobe和user为用户名

chmod 600 /etc/vsftpd/vsftpd_login  更改权限

db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db     //生成库文件

3aa728234f7c29020887eceacf572b613aa.jpg

创建虚拟用户的配置文件所在目录,目录可以自定义

mkdir /etc/vsftpd/vsftpd_user_conf

创建第一个用户的配置文件,文件名要和用户名保持一致

cd /etc/vsftpd/vsftpd_user_conf/

vim tobe

local_root=/home/virftp/tobe  //虚拟用户的家目录
anonymous_enable=NO //是否允许匿名用户
write_enable=YES //是否允许可写
local_umask=022 //创建新目录和文件的权限
anon_upload_enable=NO //是否允许匿名用户上传
anon_mkdir_write_enable=NO //是否允许匿名用户可创建
idle_session_timeout=600 //连接后没有任何操作的超时时间,空闲时间段,600秒
data_connection_timeout=120 //数据传输的超时时间120秒
max_clients=10 //最大允许连接的clients客户端个数

创建虚拟用户家目录,并创建一个文件

mkdir /home/virftp/tobe
touch /home/virftp/tobe/test.txt
chown -R virftp:virftp /home/virftp    //更改整个目录权限

vim /etc/pam.d/vsftpd         //定义密码文件在哪里,在最前面加上如下内容,注意每行语句后面不能有空格
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

8ca4445c829170a48cce421f0c0e975e74c.jpg

修改vsftpd的主配置文件/etc/vsftpd/vsftpd.conf。注意每行语句后面不能有空格

 vim /etc/vsftpd/vsftpd.conf

将anonymous_enable=YES 改为 anonymous_enable=NO        
将anon_upload_enable=YES 改为 anon_upload_enable=NO 
将anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO
再增加如下内容:
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
allow_writeable_chroot=YES

edd6388182edf32c038f54588a6ccfad9b9.jpg

systemctl start vsftpd     //启动vsftpd服务,并查看启动状态

注意: 21端口FTP; 22端口SSHD; 23端口TELNET

767fdc695dbdb135afffa22d33c4f408a55.jpg

2、测试ftp

在服务器上安装lftp   yum install -y lftp

安装完成后,链接用户tobe:   lftp tobe@127.0.0.1

执行命令ls,看是否正常输出,若不正常查看日志/var/log/messages和/var/log/secure

?         //是用来查看可以操作的命令

使用 get+文件名 来下载一个文件到当前所在目录,下图所在目录为/root/,所以文件在root目录下

65a65522af920cd492b6b918f3d5f8ba84f.jpg

八、xshell使用xftp传输文件

1、使用xshell直接传输

原理就是:使用sftp模式登录服务器

第一步:在xshell下,新建会话,按下图设置其属性

95385b91ce70cc4ba320547aa4f940dbf67.jpg

第二步:按下图,设置其下载到的目录

88fb9cfe630d3568f8ba9cfbe26180dbb4c.jpg

设置完成输入用户名密码进入

可以自由切换目录

abfbd62f94f3f441b0d53be627162df2862.jpg

get httpd-2.4.39.tar.gz    获取此文件

1366e0a8575761422d8d27e4fb40013d025.jpg

此时windows在桌面上,找到对应的目录,即可看到相应的文件

e44ad66267bc4f3dea6361cde49f3bded75.jpg

2、xshell使用xftp软件传输文件

在xshell界面上按下“ctrl+alt+F”弹出以下对话框,点击下载,跳转到下载页,下载安装

16189008bcfd61fd8147e84f9622e79ead2.jpg

安装完成后,回到xshell上,按下“ctrl+alt+F”弹出软件界面

5aa7b4ad8134cdff48a6e1bb3148c054ae7.jpg

左侧windows下选择好要传输的目录,在右侧选择要传输的文件,点击传输,左侧会显示传输过去的文件

b5cfdf600222b62afba8ae9ebf8cced30ec.jpg

九、 使用pure-ftpd搭建ftp服务

pure-ftp为另外一款轻量FTP服务软件,和vsftp类似

安装并配置pure-ftpd

yum install -y pure-ftpd

vim /etc/pure-ftpd/pure-ftpd.conf        //找到pureftpd.pdb这行,把行首的#删除

022a4ff693dbe5c6d2b50c0b2823d87d6fe.jpg

因为vsftpd和pure-ftpd 共用21端口,因此需要把vsftpd服务关掉,再开启pure-ftpd

systemctl stop vsftpd

 systemctl start pure-ftpd

aa2138be4b669eb73621c6a43b32aa595d0.jpg

创建一个测试用户目录及用户

mkdir /data/ftp
useradd -u 1010 pure-ftp
chown -R pure-ftp:pure-ftp /data/ftp

通过pure-pw命令增加ftp用户以及配置用户库文件

pure-pw useradd ftp_usera -u pure-ftp  -d /data/ftp        通过pure-pw命令创建一个用户,useradd指定用户名为ftp_usera,-u指定系统的用户是pure-ftp,-d 指定虚拟用户的家目录为/data/ftp
pure-pw mkdb            //建立虚拟用户数据
touch /data/ftp/123.txt   创建一个测试文件
lftp ftp_usera@127.0.0.1    测试正常

00f67265f182fc584bd6962fe4c103b294e.jpg

chown pure-ftp:pure-ftp /data/ftp/123.txt   属主映射成UID,数组为系统中组的名字

763703dddc3fc70fdbfbae85bd7028c4666.jpg

转载于:https://my.oschina.net/u/4093217/blog/3052141

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值