1 NFS介绍
2 NFS服务端安装配置
3 NFS配置选项
4 exportfs命令
5 NFS客户端问题
6 FTP介绍
7 使用vsftpd搭建ftp
8 xshell使用xftp传输文件
9 使用pure-ftpd搭建ftp服务
1、NFS介绍
- NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步
- NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,目前最新为4.1版本
- NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写
- NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致
NFS架构
NFS原理图
服务端的NFS服务监听一个端口通过RPC协议监听的端口,再去告诉客户端RPC协议,然后NFS客户端通过本机的RPC端口回传数据信息到服务端NFS监听的端口,最终实现通信
NFS服务需要借助RPC协议实现通信
2、NFS服务端安装配置
- yum install -y nfs-utils rpcbind
- vim /etc/exports //加入如下内容
/home/nfstestdir 192.168.133.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
- 保存配置文件后,执行如下准备操作
- mkdir /home/nfstestdir
- chmod 777 /home/nfstestdir
- systemctl start rpcbind
- systemctl start nfs
- systemctl enable rpcbind
- systemctl enable nfs
准备两台虚拟机,一台作为服务端,一台作为客户端。
分别查看服务端和客户端的IP地址
在服务端上安装两个包,分别为 nfs-utils 和 rpcbind
在客户端上安装nfs-utils 包
安装完成后,编辑文件/etc/exports,添加一行内容,保存退出
创建目录并设定777权限
查看服务端和客户端监听的端口
启动NFS服务并查看
设置开机启动
3、NFS配置选项
- rw 读写
- ro 只读
- sync 同步模式,内存数据实时写入磁盘,相应的就会降低磁盘效率
- async 非同步模式,它会每隔一段时间才会将数据刷新到磁盘
- no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大
- root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
- all_squash 客户端上所有用户(包括root用户)在使用NFS共享目录时都被限定为一个普通用户
- anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid
客户端挂载NFS,查看客户端是否有权限
出现报错,无法与192.168.133.130通信,是由于防火墙导致的,需要关闭防火墙
关闭防火墙
再查看NFS客户端是否有权限
共享的目录是/home/nfstestdir
在客户端上挂载并查看
在客户端共享的目录下创建文件并查看
到服务端上查看
一旦挂载了NFS的共享目录,不管用哪一个用户来操作,都会用以1000uid和1000gid的用户反映过来。
客户端用户显示aming,而服务端用户显示mysql,是因为NFS上限定了用户。
4、exportfs命令
- 常用选项
- -a 全部挂载或者全部卸载
- -r 重新挂载
- -u 卸载某一个目录
- -v 显示共享目录
- 以下操作在服务端上 -vim /etc/exports //增加
/tmp/ 192.168.133.0/24(rw,sync,no_root_squash)
- exportfs -arv //不用重启nfs服务,配置文件就会生效
- 以下操作在客户端
- mkdir /aminglinux
- mount -t nfs -onolock 192.168.133.130:/tmp /aminglinux
- touch /aminglinux/test.txt
- ls -l !$
- -oremount,nfsvers=3
客户端上卸载挂载点
服务端上exportfs -arv命令可以使更改后的配置文件生效。
编辑/etc/exports配置文件,增加一行内容,保存退出
再执行exportfs -arv命令
在客户端上执行showmount -e命令看是否生效
客户端挂载,将 tmp目录挂载到mnt目录下
在服务端上查看tmp目录
客户端的mnt目录下创建文件,查看目录下的文件
服务端查看tmp目录
5、NFS客户端问题
- NFS 4版本会有该问题
- 客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组为nobody
- 客户端挂载时加上 -o nfsvers=3
- 客户端和服务端都需要
- vim /etc/idmapd.conf //
- 把“#Domain = local.domain.edu” 改为 “Domain = xxx.com” (这里的xxx.com,随意定义吧),然后再重启rpcidmapd服务
方法一:在客户端挂载时加上选项-o nfsvers=3
方法二:客户端和服务端都需要vim /etc/idmapd.conf
把“#Domain = local.domain.edu” 改为 “Domain = xxx.com” (这里的xxx.com,随意定义),然后再重启rpcidmapd服务
6、FTP介绍
FTP(file transfer protocol)文件传输协议,用于在Internet上控制文件的双向传输。FTP主要作用是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷贝到本地计算机,或把本地文件传送到远程计算机。
由于FTP服务的安全性较差,所以大企业不使用,小企业会经常使用,大企业会使用自动化发布工具。
7、使用vsftpd搭建ftp
- centos上自带vsftpd
- yum install -y vsftpd
- useradd -s /sbin/nologin virftp
- vim /etc/vsftpd/vsftpd_login //内容如下,奇数行为用户名,偶数行为密码,多个用户就写多行
testuser1
aminglinux
- 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 testuser1 //加入如下内容
local_root=/home/virftp/testuser1
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
- mkdir /home/virftp/testuser1
- touch /home/virftp/testuser1/aming.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 //启动vsftpd服务
使用vsftpd搭建ftp
安装vsftpd包
安装完成后创建一个普通用户,目的是让虚拟用户做一个映射的
编辑虚拟用户的密码文件,定义用户名(奇数行)和密码(偶数行),保存退出
更改文件权限,为了确保密码文件的安全,防止所有的用户都可以读取
将文本的密码文件转换为计算机识别的二进制文件
创建虚拟用户配置文件目录,创建第一个用户的配置文件(与用户名保持一致),添加内容,保存退出
local_root=/home/virftp/testuser1 ,指定虚拟用户的家目录
anonymous_enable=NO,是否允许匿名用户
anon_upload_enable=NO,是否允许匿名用户上传
anon_mkdir_write_enable=NO,是否允许匿名用户创建目录和写
idle_session_timeout=600,连接ftp超时时间(秒)
data_connection_timeout=120,数据传输的超时时间(秒)
max_clients=10,最多允许同时几个终端连接
创建虚拟用户的家目录,并新建一个文件,修改权限
定义密码文件的路径,添加两行内容,保存退出
注意:在centos6中“/lib64/security/pam_userdb.so”该文件需要区分是32位还是64位版本
编辑 /etc/vsftpd/vsftpd.conf 主配置文件,修改并在最下面添加几行内容,保存退出
guest_username=virftp,开启虚拟用户和系统用户的映射
virtual_use_local_privs=YES,告诉服务现在用的虚拟用户
启动vsftpd服务,查看进程和监听端口
FTP监听是21端口,22端口是sshd,23端口是telnet
FTP测试
在windows上安装一个FTP的客户端软件filezilla client,linux上的FTP测试,安装lftp包
使用lftp命令如下,输入口令,并用ls查看
? 可以查看哪些能使用的命令
把aming.txt文件直接下载到当前目录,按quit退出,然后查看
利用xshell实现跟FTP类似的功能
第一种方案:新建一个会话,协议改成 sftp 协议,输入名称,IP和端口号
然后连接,输入用户名和密码
登录后默认在root目录下,切换到/tmp目录下,下载文件,保存的地址也可以设置
输入exit命令可以退出。
第二种方案:按ctrl+alt+f,下载xftp并安装即可。
8、xshell使用xftp传输文件
在xshell按快捷键 ctrl+alt+f ,会弹出个对话框,选择下载xftp,进入网页,点击下载链接
进入界面,选择上面一行(免费),填写信息,提交
根据邮箱中的链接,点击下载,然后安装;然后到Xshell中,按ctrl+alt+f,会自动弹出xftp的页面,打开之后会进入到root目录下
在虚拟机上暂停掉21端口,一样也可以传输文件
若是想要下载linux系统里的文件,只需双击,或者直接拖动到左边即可
9、使用pure-ftpd搭建ftp服务
- yum install -y epel-release
- yum install -y pure-ftpd
- vim /etc/pure-ftpd/pure-ftpd.conf//找到pureftpd.pdb这行,把行首的#删除
- systemctl stop vsftpd
- systemctl start pure-ftpd
- mkdir /data/ftp
- useradd -u 1020 pure-ftp
- chown -R pure-ftp:pure-ftp /data/ftp
- pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp
- pure-pw mkdb
- pure-pw list/userdel/usermod/passwd
安装pure-ftpd
更改配置文件,搜索/pdb那一行,将前面的#删掉,保存退出
先停掉vsftpd监听打开的21端口,systemctl stop vsftpd
然后启动pure-ftpd服务,并查看
创建测试目录和创建用户,更改属主和属组
创建虚拟用户ftp_usera, -u 指定系统用户,-d 指定虚拟用户的家目录,输入两次密码
使用pure-pw --help查看该命令用法
命令pure-pw mkdb,把密码生成pure-ftpd服务所识别的一种文件,需要执行,才能登陆
测试pure-ftpd
在/data/ftp/目录下创建一个文件
更改属主和属组,登录pure-ftpd中去查看