任务列表:
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
NFS介绍
** 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应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致;
** NFS原理**
首先:NFS包括两部分,服务端及客户端
由于NFS服务功能很多,会有很多端口,这些端口还有可能不固定,那么客户端就无法与服务器进行通信,因为程序间通信必须通过端口(tcp/udp都是端到端通信),那么就需要一个中间的桥接机制,RPC进程即充当这样一个角色,RPC的端口是一定的(111),当NFS启动时,会向RPC进行注册, 那么客户端PRC就能与服务器RPC进行通信, 从而进行文件的传输。
当客户端用户打开一个文件或目录时,内核会判断,该文件是本地文件还是远程共享目录文件,如果是远程文件则通过RPC进程访问远程NFS服务端的共享目录,如果是本地文件,则直接打开。
为了更好的并发,RPC进程及NFS进程都有多个。
安装配置NFS
用两台机器做实验,一台服务端,一台客户端
在服务端和客户端安装:nfs-utils包
yum install -y nfs-utils
在服务端新建配置文件并写入以下内容
vim /etc/exports
/home/nfstestdir 192.168.196.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
释义:
/home/nfstestdir :定义共享的目录
192.168.196.0/24:为客户端的网段;
rw: 读写
ro: 只读
sync: 同步模式,内存数据实时写入磁盘
async :非同步模式
no_root_squash: 客户端挂载NFS共享目录后,root用户不受约束,权限很大
root_squash: 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
all_squash:客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
anonuid/anongid: 和上面几个选项搭配使用,定义被限定用户的uid和gid
在服务端创建共享目录,并将权限修改为777
mkdir /home/nfstestdir
chmod 777 /home/nfstestdir
开启nfs服务,查看111端口是否被(显示为systemd)
systemctl start nfs
netstat -lntp
设置开机启动
systemctl enable nfs
在客户端查看共享的目录
showmount -e 192.168.196.101
如提示下面错误,清空防火墙规则
操作完成之后,可以看到服务端共享的目录
挂载NFS
在客户端输入
mount -t nfs 192.168.196.101:/home/nfstestdir /mnt/
df -h
测试,在客户端该目录下创建文件,在服务端上进行查看
exportfs命令
exportps命令常用选项:
释义
-a 全部挂载或者全部卸载
-r 重新挂载
-u 卸载某一个目录
-v 显示共享目录
在服务端上输入exportfs -arv
这样就可以让服务器直接生效,不需要再次重启nfs服务
编辑配置文件,增加一个共享的目录
vim /etc/exports
exportfs -arv, 直接生效,不用重启NFS服务
在服务端进行测试
查看服务端共享目录showmount -e 192.168.196.101
umount /mnt 将之前挂载的目录卸载
mount -t nfs 192.168.196.101:/tmp /mnt/ 挂载新的目录
查看新创建的文件,gid和uid都是root
NFS客户端问题
注意:NFS 4版本会有该问题
我们在分享一个目录且权限设置为no_root_squash,客户端看到的文件属主、组不是root,却是nobody。 这个不是设置错误,是软件本身自带的BUG。
解决方案:
方案1: 在客户端挂载的时候加上 -o nfsvers=3,其目的是指定nfs使用3版本。
mount -t nfs -o,nfsvers=3 192.168.112.136:/tmp /mnt/
方案2:在服务端和客户端配置:vim /etc/idmapd.conf
vi /etc/idmapd.conf
#Domain = local.domain.edu 改为 Domain = xxx.com
重启rpcidmapd服务;
FTP搭建和配置
FTP介绍
我们之前传输文件所用的是rzsz命令,可以简单明了的就把我们所需的文件下载或者上传。但是有个缺陷,不可以上传或者下载大体积的文件。FTP就可以解决这个问题!
FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。
FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。 小公司用的多,FTP不够安全。
使用vsftpd搭建ftp服务
安装FTP软件vsftpd
yum install -y vsftpd
安装后,可以直接使用,默认支持使用系统账号登录。但这样不安全,所以需要建立账号体系;
useradd -s /sbin/nologin virftp //创建虚拟用户,-s表示指定用户的shell,/sbin/nologin表示用户不能登陆
vim /etc/vsftpd/vsftpd_login //创建账号、密码文件
奇数行为用户名,偶数行为密码
vsfptd 使用的密码不是明文,所以需要生产相对应的库文件;
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 test1 //新建test1账号的配置文件
local_root=/home/virftp/test1 //虚拟用户的家目录
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客户端
创建账号test1的家目录,并在其下面创建新文件
mkdir /home/virftp/test1
touch /home/virftp/test1/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
修改全局配置文件
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
测试,安装lftp
yum install -y lftp
ftp test1@127.0.0.1
xshell使用xftp传输文件
使用xshell直接传输
在xshell下,新建会话,按下图设置其属性
设置目标目录;
输入用户名密码连接
进入目录,并使用get下载文件
xshell使用xftp软件传输文件
在xshell界面上按下“ctrl+alt+F”弹出以下对话框
根据网页提示进行下载
下载完成之后安装程序
使用pure-ftpd搭建ftp服务
Pure-ftp为另外一款轻量FTP服务软件,和vsftp类似
安装并配置pure-ftpd
yum install -y pure-ftpd
配置文件
vim /etc/pure-ftpd/pure-ftpd.conf
去掉如图所示行前的#号
因为vsftpd和pure-ftpd 共用21端口,因此需要把vsftpd服务关掉,再开启pure-ftpd
创建一个新的系统用户
mkdir /data/ftp //创建数据目录
touch /data/ftp/123.txt //创建一个文件
useradd -u 1010 pure-ftp //设置UID
chown -R pure-ftp:pure-ftp /data/ftp/
通过pure-pw命令增加ftp用户以及配置用户库文件
pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp/ //建立相关信息Password
pure-pw mkdb //建立虚拟用户数据
测试
lftp ftp_usera@127.0.0.1
课堂笔记
NFS使用场景
服务器少的时候,并发量小得时候
NFS生产环境中注意事项
NFS出现故障的时候,会导致PHP进程卡死,网页出现502
FTP使用场景
上传和下载文件
FTP使用建议
不安全,不建议在生产环境中使用,测试环境中使用。