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.htmlphp
1、NFS介绍
一、NFS简介html
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上的一致
二、NFS原理:mysql
2、NFS服务端安装配置linux
用两台机器作实验,一台做为服务端(001 192.168.83.3),一台做为客户端(002 192.168.83.33);
在两台机器上安装: yum install -y nfs-utils rpcbindsql
在001上,编辑配置文件 :vim /etc/exportsshell
写入如下语句vim
/home/nfstestdir 192.168.83.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)windows
语句释义:centos
/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权限
开启nfs服务 : systemctl start nfs
查看监听端口,端口111为rpcbind默认端口
设置开机启动:systemctl enable nfs
3、NFS配置选项
一、挂载NFS
showmount -e 192.168.83.3 //该ip为NFS服务端ip
若是没有出现共享目录,有下面可能,注意排查:
一、二者通讯问题
二、把二者的防火墙关闭
此处关闭服务端和客户端的防火墙: systemctl stop firewalld
selinux也要关掉
showmount -e 192.168.83.3 //该ip为NFS服务端ip
开始挂载:
mount -t nfs 192.168.83.3:/home/nfstestdir /mnt
在客户端挂载目录/mnt/下,就是NFS共享的目录,建立一个测试文件tobe.php
在服务端的共享目录中能够看到
4、exportfs命令
看下图:假如A的NFS服务停掉了,可是B和C还在挂载着A分享的分区,这就没法正常工做了,因为B和C上面的进程是d状态(不可中断进程,在ps一节中学习到的),一旦A中止了,B和C必定会出问题,没法服务,既不能够重启,也不能够关闭,就会把系统整挂掉。因此NFS必定不能够随便重启。 若是必须重启怎么办?先把B和C上面的目录卸载下来。
若是挂载了多台机器,使用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服务,也不会对客户端形成以前所说的错误
编辑配置文件,增长一个共享的目录
vim /etc/exports
/tmp/ 192.168.83.33/24(rw,sync,no_root_squash)
用命令:exportfs -arv 直接生效,不用重启NFS服务
使用客户端测试;
查看服务端共享目录:showmount -e 192.168.83.3
挂载 mount -t nfs 192.168.83.3:/tmp /mnt
由于以前挂载了,须要先取消挂载
在客户端mnt下建立一个测试文本
新检测试文本1212.txt,查看其gid和uid都为root
在服务端001下
查看/tmp目录下的1212.txt测试文本,其uid和gid都为root
5、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中间看状况是否要加空格
方案2:在服务端和客户端配置:
vim /etc/idmapd.conf
把“#Domain = local.domain.edu” 改成 “Domain = xxx.com” (这里的xxx.com,看状况能够自定义),而后再重启rpcbind服务
6、FTP介绍
咱们以前传输文件所用的是rz,sz命令,能够简单明了的就把咱们所需的文件下载或者上传。可是有个缺陷,不能够上传或者下载大致积的文件。FTP就能够解决这个问题! FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。 FTP的主要做用就是让用户链接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,而后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。 小公司用的多,大企业不用FTP,由于不安全,一般使用GitHub。
7、使用vsftpd搭建ftp服务
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 //生成库文件
建立虚拟用户的配置文件所在目录,目录能够自定义
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
修改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
systemctl start vsftpd //启动vsftpd服务,并查看启动状态
注意: 21端口FTP; 22端口SSHD; 23端口TELNET
二、测试ftp
在服务器上安装lftp yum install -y lftp
安装完成后,连接用户tobe: lftp tobe@127.0.0.1
执行命令ls,看是否正常输出,若不正常查看日志/var/log/messages和/var/log/secure
? //是用来查看能够操做的命令
使用 get+文件名 来下载一个文件到当前所在目录,下图所在目录为/root/,因此文件在root目录下
8、xshell使用xftp传输文件
一、使用xshell直接传输
原理就是:使用sftp模式登陆服务器
第一步:在xshell下,新建会话,按下图设置其属性
第二步:按下图,设置其下载到的目录
设置完成输入用户名密码进入
能够自由切换目录
get httpd-2.4.39.tar.gz 获取此文件
此时windows在桌面上,找到对应的目录,便可看到相应的文件
二、xshell使用xftp软件传输文件
在xshell界面上按下“ctrl+alt+F”弹出如下对话框,点击下载,跳转到下载页,下载安装
安装完成后,回到xshell上,按下“ctrl+alt+F”弹出软件界面
左侧windows下选择好要传输的目录,在右侧选择要传输的文件,点击传输,左侧会显示传输过去的文件
9、 使用pure-ftpd搭建ftp服务
pure-ftp为另一款轻量FTP服务软件,和vsftp相似
安装并配置pure-ftpd
yum install -y pure-ftpd
vim /etc/pure-ftpd/pure-ftpd.conf //找到pureftpd.pdb这行,把行首的#删除
由于vsftpd和pure-ftpd 共用21端口,所以须要把vsftpd服务关掉,再开启pure-ftpd
systemctl stop vsftpd
systemctl start pure-ftpd
建立一个测试用户目录及用户
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 测试正常
chown pure-ftp:pure-ftp /data/ftp/123.txt 属主映射成UID,数组为系统中组的名字