1NFS介绍
- NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写
- NFS,Network File System。网络文件系统,即通过网络,对在不同主机上的文件进行共享
- NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致
2.NFS原理
-
首先:NFS包括两部分,服务端及客户端
-
由于NFS服务功能很多,会有很多端口,这些端口还有可能不固定,那么客户端就无法与服务器进行通信,因为程序间通信必须通过端口(tcp/udp都是端到端通信),那么就需要一个中间的桥接机制,RPC进程即充当这样一个角色,RPC的端口是一定的(111),当NFS启动时,会向RPC进行注册, 那么客户端PRC就能与服务器RPC进行通信, 从而进行文件的传输
-
当客户端用户打开一个文件或目录时,内核会判断,该文件是本地文件还是远程共享目录文件,如果是远程文件则通过RPC进程访问远程NFS服务端的共享目录,如果是本地文件,则直接打开
-
为了更好的并发,RPC进程及NFS进程都有多个
3.安装配置NFS
1).为了能更好的方便实验我们准备两台机器,其中一台机器做为服务端另一台机器做为客户端.在两台机器上都要进行安装nfs-utils包这个包
yum install -y nfs-utils
2).在服务端上进行编辑文件/etc/exports增加一行
/home/nfstestdir 192.168.126.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.126.0/24:为客户端的网段
3).创建/home/nfstestdir目录并授权为777
4
4).开启nfs服务并查看监听的端口
这里监听的端口是111默认端口但是名字却没有显示rpcbind由于centos的特性导致的这里只需要知道了解就好了
5).增加开机自启动(在服务端上进行操作)
4.NFS客户端挂载
1).安装nfs-utils这个安装包之前已经安装过了这里就不安装了
2).查看有么有权限可以使用showmount -e 192.168.126.128 这里ip指定的是服务端的ip
这里可能会遇到出现错误的问题这里就要排查服务端有没有开启nfs服务如果开启了就看一下防火墙有没有开启如果开启了在服务端和客户端都要关闭之后再进行查看有没有权限
[root@localhost ~]# showmount -e 192.168.126.128
此时能够看到远程服务端能够把某个目录贡献给了哪些客户端
3).挂载共享的目录在客户端上进行操作在使用df进行查看
mount -t nfs 192.168.126.130:/home/nfstestdir /mnt/
4).下面进行测试并验证现在客户端上进行创建一个文件然后在服务器上进行查看有没有同样的文件
此时实现了同步共享
5).xeportfs命令
- exportfs命令用来管理当前NFS共享的文件系统列表
- Options:
- -a:全部卸载或全部挂载
- -r:重新挂载
- -u:卸载某个目录
- -v:显示共享目录
- 常用组合: exportfs -arv
- 服务端更改配置文件后,不重启服务,直接执行该命令就可以使更改后的配置文件生效
- 注意: 在重启nfs服务之前需要先将所有挂载点卸载,否则将发生程序错误,严重者会拖垮系统
6.NFS客户端问题
针对NFS4版本在centos6中应用存在如下问题:
客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、数组为nobody
解决方法:
- 方法1:在客户端进行挂载时加上选项-o nfsvers=3
[root@localhost ~]# mount -t nfs -o nfsvers=3 192.168.126.130:/tmp/ /mnt/
如果目录已经挂载,而又不想卸载,执行如下命令:
[root@localhost ~]# mount -t nfs -o remount,nfsvers=3 192.168.126.130:/tmp/ /mnt/
- 方法2:客户端和服务端都需要
[root@localhost ~]# vi /etc/idmapd.conf
把该配置文件中的“Domain = local.domain.com”改为“Domain = xxx.com”(此处xxx.com自定义),然后重启rpcidmapd服务(在centos7中直接重启rpcbind服务
7.FTP介绍
我们之前传输文件所用的是rzsz命令,可以简单明了的就把我们所需的文件下载或者上传。但是有个缺陷,不可以上传或者下载大体积的文件。FTP就可以解决这个问题! 超过4G, 跳板机。FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。 小公司用的多,大企业不用FTP,因为不安全。大多数的企业使用git
8.使用vsftpd搭建ftp服务
1).安装和配置
首先进行下载ftp安装包 centos上自带的FTP软件vsftpd,默认没有安装,需要用yum安装
yum install -y vsftpd
2)安装后,不用配置,可以直接使用,默认支持使用系统账号登录,但是因为安全原因,需要建立账号体系,下面进行创建一个账户
useradd -s /sbin/nologin virftp
3).下面进行权限的设置以及把刚才设置的用户名和密码转换成二进制文件
db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
把刚才创建的用户名和密码文件进行转换成二进制文件
4).创建虚拟用户的相关配置文件
把下面配置文件增加到刚才我们要创建的test23里面去
local_root=/home/virftp/test123 //虚拟用户的家目录
anonymous_enable=NO //是否允许匿名用户
write_enable=YES //是否允许可写
local_umask=022 //创建新目录和文件的权限
anon_upload_enable=NO //是否允许匿名用户上传
anon_mkdir_write_enable=NO //是否允许匿名用户可创建
idle_session_timeout=600 //连接后没有任何操作的超时时间,空闲时间段
data_connection_timeout=120 //数据传输超时时间
max_clients=10 //最大允许连接的clients客户端
5).下面进行创建虚拟用户的家目录
6).增加密码文件增加下面两行在/etc/pam.d/vsftpd 同时还要修改全局配置/etc/vsftpd/vsftpd.conf配置文件
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login //新增语句
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
将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
7).启动服务并查看监听端口
8).进行测试
先在虚拟机上进行安装lftp这个安装包
使用 get+文件名 来下载一个文件到根目录下载到了虚拟机的root用户下面了退出用quit
8.使用xshell使用xftp传输文件
xshell使用xftp软件传输文件
在xshell界面上按下“ctrl+alt+F”弹出以下对话框
安装完成后,回到虚拟机上,按下“ctrl+alt+F”弹出软件界面
9.使用pure-ftpd搭建ftp服务
1).安装并配置文件
yum install -y pure-ftpd
vim /etc/pure-ftpd/pure-ftpd.conf
2).因为vsftpd和pure-ftpd 共用21端口,因此需要把vsftpd服务关掉,再开启pure-ftpd
3).创建一个新的用户
4).通过PW命令,配置相关信息