一、NFS
1.1 NFS介绍
NFS:Network File System 网络文件系统,NFS 和其他文件系统一样,是在 Linux 内核中实现的,因此 NFS 很难做到与 Windows 兼容。NFS 共享出的文件系统会被客户端识别为一个文件系统,客户端可以直接挂载并使用。是Unix系统之间共享文件的一种协议,NFS 文件系统仅支持基于 IP 的用户访问控制,NFS 的客户端主要为Linux。
因为NFS有很多功能,不同的功能需要使用不同的端口。因此NFS无法固定端口。而RPC会记录NFS端口的信息,这样就能够通过RPC实现服务端和客户端的RPC来沟通端口信息。那RPC和NFS之间又是如何之间相互通讯的?
首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口。RPC就会记录下这些端口。并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那服务端的RPC就会将记录的NFS端口信息告知客户端。
1.2 实战
实验环境准备两台机器
支持多节点同时挂载以及并发写入
服务端:nfs-server 192.168.246.160
客户端:web1 192.168.246.161centos7(服务端和客户端都关闭防火墙和selinux内核防火墙)
-
NFS-server服务端操作
1.安装NFS及rpc协议包 [root@nfs-server ~]# yum -y install rpcbind [root@nfs-server ~]# yum -y install nfs-utils 2.启动服务 [root@nfs-server ~]# systemctl start nfs [root@nfs-server ~]# systemctl start rpcbind 3.创建存储目录 [root@nfs-server ~]# mkdir /nfs-dir [root@nfs-server ~]# echo "nfs-test" >> /nfs-dir/index.html # 制作测试文件index.html 4.编辑共享文件 [root@nfs-server ~]# vim /etc/exports /nfs-dir 192.168.246.0/24(rw,no_root_squash,sync)
在编辑共享文件时的可选参数详解:
ro: # 只读 rw: # 读写 *: # 表示共享给所有网段。 sync:# 所有数据在请求时写入共享 root_squash: # 对于使用分享目录的使用者如果是root用户,那么这个使用者的权限将被压缩成为匿名使用者,只读权限。 no_root_squash: # 使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限。 all_squash: # 这个选项对于公共访问的 NFS 卷来说非常有用,它会限制所有的使用者将权限压缩为匿名用户。缺省设置是 no_all_squash。
共享目录 共享给谁 共享出去的文件属性 共享文件 一个人:ip/24 (rw,no_root_squash,sync) 共享文件 所有人:* (rw,ro,no_root_squash,sync) 共享文件 网段:192.168.246.0/24 (rw,no_root_squash,sync) 5.启NFS服务 [root@nfs-server ~]# systemctl restart nfs-server [root@nfs-server ~]# systemctl enable nfs-server 6.确认NFS服务器启动 [root@testpm-server ~]# exportfs -v /nfs-dir 192.168.246.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
-
web1客户端操作
1.安装NFS及rpc协议包 [root@web1 ~]# yum -y install rpcbind [root@web1 ~]# yum -y install nfs-utils 2.创建挂载点并挂载 [root@web1 ~]# mkdir /zrs [root@web1 ~]# mount -t nfs 192.168.246.160:/nfs-dir /zrs [root@web1 ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 17G 1.1G 16G 7% / tmpfs tmpfs 98M 0 98M 0% /run/user/0 192.168.246.160:/nfs-dir nfs4 17G 1.4G 16G 8% /zrs 3.查看挂载目录下的内容 [root@web1 ~]# ls /zrs index.html # 挂载目录下存在index.html文件,说明NFS文件共享成功 4.制作开机挂载 [root@client.qfedu.com ~]# vim /etc/fstab 192.168.246.160:/nfs-dir /qf nfs defaults 0 0 [root@client.qfedu.com ~]# mount -a
[root@web1 ~]# umount /zrs # 取消挂载
二、FTP
2.1 FTP介绍
-
文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP 基于TCP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输。用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。
-
FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。
FTP Server
作用:提供文件共享服务,实现上传下载。
2.2 FTP基础
软件包:vsftpd
FTP端口:控制端口 command 21/tcp
配置文件:/etc/vsftpd/vsftpd.conf
(1)ftp主动模式
ftp主动模式:客户端开启一个端口N(>1023)向服务端的21端口,建立连接,同时开启一个N+1,告诉服务端,我监听的是N+1端口,服务端接到请求之后,用自己的20端口连接到客户端的N+1端口,进行传输。
21:端口建立连接
20:端口传输数据
(2)ftp被动模式
ftp被动模式:客户端同时开启两个端口(1024,1025),一个端口(1024)跟服务端的21端口建立连接,并请求,大哥,我连上了,你再开一个端口呗。服务端接到请求之后,随机会开启一个端口(1027)并告诉客户端我开启的是1027端口,客户端用另一个端口(1025)与服务端的(1027)端口进行连接,传输数据。
企业实际环境中,如果FTP客户端与FTP服务端均开放防火墙,FTP需以主动模式工作,这样只需要在FTP服务器端防火墙规则中,开放20、21端口即可。
2.3 Vsftp服务器简介
Vsftp:Very Secure FTP daemon非常安全的FTP服务进程,Vsftpd在Unix/Linux发行版中最主流的FTP服务器程序,优点小巧轻快,安全易用、稳定高效、满足企业跨部门、多用户的使用(1000用户)等。
2.4 实战
实验环境:准备两台机器
关闭防火墙和selinux
ftp-server 192.168.246.160
client 192.168.246.161
2.4.1 匿名用户登录
-
FTP Server服务端操作
1.安装vsftpd服务 [root@ftp-server ~]# yum install -y vsftpd [root@ftp-server ~]# systemctl start vsftpd [root@ftp-server ~]# systemctl enable vsftpd 2.创建文件到共享目录(FTP默认共享目录:/var/ftp/pub/) [root@ftp-server ~]# touch /var/ftp/pub/test.txt [root@ftp-server ~]# cd /var/ftp/ [root@ftp-server ftp]# 3.改变根目录的属主、属组 [root@ftp-server ftp]# chown ftp.ftp pub/ -R [root@ftp-server ftp]# ll total 0 drwxr-xr-x. 2 ftp ftp 22 Aug 3 03:15 pub
**重点:**改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而pub默认的属主属组是root。
修改完配置之后需要重启完服务才能生效。
还需要从新从客户端登陆,否则修改后的配置看不到效果。4.编辑配置文件:找到29行将下面的注释取消 [root@ftp-server ~]# vi /etc/vsftpd/vsftpd.conf anon_other_write_enable=YES
5.重启vsftpd [root@ftp-server ~]# systemctl restart vsftpd
-
FTP Clinet客户端操作
1.安装客户端 [root@client ~]# yum -y install lftp get命令(下载,首先要开启下载功能) [root@client ~]# lftp 192.168.246.160 lftp 192.168.246.160:~> ls drwxr-xr-x 2 0 0 6 Oct 30 2018 pub lftp 192.168.246.160:/> cd pub/ lftp 192.168.246.160:/pub> ls -rw-r--r-- 1 14 50 0 Aug 02 19:14 test.txt
接下来进行下载、创建和上传操作:
2.下载(get命令) lftp 192.168.246.160:/pub> get test.txt lftp 192.168.246.160:/pub> exit [root@client ~]# ls # 会下载到当前目录 anaconda-ks.cfg test.txt
3.创建目录 [root@client ~]# lftp 192.168.246.160 lftp 192.168.246.160:/pub> mkdir dir mkdir ok, `dir' created
4.上传(put命令可上传单独文件,mirror命令上传目录以及目录中的子文件)
上传命令,上传之前请在服务端进行配置,将上传功能打开。
[root@client ~]# touch upload.txt # 创建测试文件 [root@client ~]# mkdir /test/ # 创建测试目录 [root@client ~]# touch /test/test1.txt # 在测试目录下面创建测试文件 [root@client ~]# lftp 192.168.246.160 lftp 192.168.246.160:~> cd pub/ lftp 192.168.246.160:/pub> put /root/upload.txt # 上传文件 lftp 192.168.246.160:/pub> ls -rw------- 1 14 50 0 Nov 16 12:14 upload.txt drwx------ 2 14 50 6 Aug 02 19:17 dir lftp 192.168.246.160:/pub> mirror -R /test/ # 上传目录以及目录中的子文件 Total: 1 directory, 1 file, 0 symlinks New: 1 file, 0 symlinks lftp 192.168.246.160:/pub> ls drwx------ 2 14 50 23 Nov 16 12:18 test -rw------- 1 14 50 0 Nov 16 12:14 upload.txt # mirror:下载目录
2.4.2 本地(系统)用户登录
-
创建测试用户
创建 zhangsan ,密码都设置为123456。
[root@ftp-server ~]# useradd zhangsan [root@ftp-server ~]# useradd lisi [root@ftp-server ~]# echo '123456' | passwd --stdin zhangsan Changing password for user zhangsan. passwd: all authentication tokens updated successfully.
-
配置本地用户ftp配置文件
[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf anonymous_enable=NO # 将允许匿名登录关闭 #anon_umask=022 # 匿名用户所上传文件的权限掩码 #anon_upload_enable=YES # 允许匿名用户上传文件 #anon_mkdir_write_enable=YES # 允许匿名用户创建目录 #anon_other_write_enable=YES # 是否允许匿名用户有其他写入权(改名,删除,覆盖) 【新添加】: local_root=/home/zhangsan # 设置本地用户的FTP根目录,一般为用户的家目录 local_max_rate=0 # 限制最大传输速率(字节/秒)0为无限制
-
重启vsftpd
[root@ftp-server ~]# systemctl restart vsftpd
-
客户端操作
[root@ftp-client ~]# lftp 192.168.153.137 -u zhangsan Password: lftp zhangsan@192.168.153.137:~> ls lftp zhangsan@192.168.153.137:~> mkdir aaa mkdir ok, `aaa' created lftp zhangsan@192.168.153.137:~> ls drwxr-xr-x 2 1000 1000 6 Aug 02 20:55 aaa lftp zhangsan@192.168.153.137:~> put /root/test.txt lftp zhangsan@192.168.153.137:~> ls drwxr-xr-x 2 1000 1000 6 Aug 02 20:55 aaa -rw-r--r-- 1 1000 1000 0 Aug 02 20:59 test.txt 服务器端查看 [root@ftp-server ~]# cd /home/zhangsan/ [root@ftp-server zhangsan]# ls aaa test.txt [root@ftp-server zhangsan]# ll total 0 drwxr-xr-x. 2 zhangsan zhangsan 6 Aug 3 04:55 aaa -rw-r--r--. 1 zhangsan zhangsan 0 Aug 3 04:59 test.txt
总结
这是一个简单的文件共享构建,可通过远程客户端对NFS网络文件系统文件进行挂载并实现数据共享。除了我们的NFS,还有我们的FTP也是比较实用的,不管是在Windows操作系统还是Linux操作系统下,都是很稳定的,可实现文件的上传、创建和下载操作,非常方便。当然了还有很多实现共享的方法,这里举的例子是比较常用的。