14.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的简写,服务端与客户端本身不能直接通信,需要借助RPC协议完成
· NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致
· NFS服务端上的NFS服务通过RPC协议(rpcbind服务)给客户端提供服务,NFS服务不监听任何的端口,rpcbind会监听111端口。 NFS服务借助PRC协议通信。
14.2 NFS服务端安装配置
· yum install -y nfs-utils rpcbid #服务端机器A上安装NFS的相关包,同时客户端机器B上安装相应的NFS包:yum install -y nfs-utils,实际上也会安装rpcbind包
· vim /etc/exports #服务端机器上编辑 /etc/exports文件,加入如下内容:
· /home/nfstestdir192.168.133.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000) #包括要分享出去的目录、分享给哪些机器的IP段及特殊选项
· mkdir /home/nfstestdir #服务端机器上创建要分享的目录
· chmod 777 /home/nfstestdir #更改目录权限为777,便于实验
· systemctl start rpcbind #启动rpcbind服务,其监听端口是111,命令netstat -lntp查看到,一般安装完rpcbind服务后会自动启动
· systemctl start nfs #服务端机器上启动nfs服务,启动nfs服务后,会自动启动rpc相关的一些服务(与nfs服务相关联),命令:ps aux |grep rpc可查看到
· systemctl enable rpcbind
· systemctl enable nfs #服务端上使nfs服务开机即启动
14.3 NFS配置选项
1、NFS配置选项
· rw 读写
· ro 只读
· sync 同步模式,内存数据实时写入磁盘
· async 非同步模式
· no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大,root用户读写共享目录不受限制
· root_squash 与上面选项相对,客户端上的root用户受到约束,被限定成某个普通用户
· all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
· anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid
2、客户端挂载
· yum install -y nfs-utils #客户端上先要安装nfs相应的包
· showmount -e 192.168.133.130 #查看,服务器端是否可nfs挂载,该ip为NFS服务端ip,注意关闭服务端和客户端的防火墙:systemctl stop firewalld,并双向关闭selinux:setenforce 0
· mount -t nfs192.168.133.130:/home/nfstestdir /mnt #挂载服务端的共享目录,挂载类型为nfs,指定nfs服务器ip及共享的目录
· df -h
· touch /mnt/test.txt
· ls -l /mnt/test.txt #可以看到文件的属主和属组都为1000,因上一节配置选项里指定anonuid=1000,anongid=1000
14.4 exprtfs命令
1、exportfs命令常用选项
若要在服务器机器上停掉或重启nfs服务,此时其他机器均挂载着其共享目录且可能在进行读写,那么停掉或重启nfs服务会导致其他机器读写进程挂起,故重启nfs服务之前需要将其他机器上挂载的该共享目录卸载
· -a #全部挂载或者全部卸载
· -r #重新挂载
· -u #卸载某一个目录
· -v #显示共享目录
2、nfs服务端操作
· vim /etc/exports #编辑exports文件,增加如下内容,共享/tmp目录
/tmp/ 192.168.133.0/24(rw,sync,no_root_squash)
· exportfs -arv #不用重启nfs服务,配置文件就会生效
3、nfs客户端操作
· mkdir /testdir
· mount -t nfs -onolock 192.168.133.130:/tmp/testdir
· touch /testdir/test.txt
· ls -l !$
· -oremount,nfsvers=3 #重新挂载,并指定nfs为3版本
14.5 NFS客户端问题
· 解决方案一:客户端挂载时加上选项“-o nfsvers=3” 指定nfs为3版本,不想卸载可加选项“-oremount,nfsvers=3” 重新挂载
· 解决方案二:客户端和服务端都需要编辑文件/etc/idmapd.conf,把“#Domain =local.domain.edu” 改为 “Domain = xxx.com” (xxx.com随意定义),然后再重启rpcidmapd服务(systemctl restart rpc)
15.1 FTP介绍
· FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。
· FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。
· 小公司用的多,大企业不用FTP,因为不安全
15.2 15.3 使用vsftpd搭建FTP服务(上)(下)
1、搭建FTP服务
· yum install -y vsftpd #CentOS上默认自带vsftpd安装包
· useradd -s /sbin/nologin virftp #创建一个虚拟用户,映射成系统中一个普通用户
· vim /etc/vsftpd/vsftpd_login #编辑虚拟用户的密码文件,定义用户名和密码,该文件为自定义的,内容如下,奇数行为用户名,偶数行为密码,多个用户就写多行
testuser1
passwd-1
testuser2
passwd-2
· 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 #创建第1个用户的配置文件,配置文件名须与用户名保持一致,并对应,加入如下内容
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 #空闲会话超时时间600s
data_connection_timeout=120 #数据传输超时时间120s
max_clients=10 #最大客户端数为10个
· mkdir /home/virftp/testuser1 #创建虚拟用户的家目录
· touch /home/virftp/testuser1/test.txt #创建测试文件
· chown -R virftp:virftp /home/virftp #更改虚拟用户家目录的所属主和所属组为virftp
· vim /etc/pam.d/vsftpd #编辑用于认证文件vsftpd文件,在最前面加上如下内容,定义密码文件路径
auth sufficient/lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login #指定密码认证的方式是文件的形式,并指定文件路径
accountsufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login #指定账户存储形式是文件的形式,并指定文件路径
· vim /etc/vsftpd/vsftpd.conf #编辑vsftpd的主配置文件,作如下修改
将“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,命令netstat -lntp可查看到
测试ftp(windows 可以使用filezilla client)
· yum install -y lftp #linux机器上安装ftp客户端,也可按“Ctrl+Alt+F”组合键下载Xftp
· lftp testuser1@127.0.0.1 #使用已定义的用户登录测试
· 执行命令ls,看是否正常输出,正常时可看到上面配置步骤里创建的,若不正常需要查看日志/var/log/messages和/var/log/secure
· 输入“?”可查看支持的命令,例如执行命令:get test.txt,可将文件下载到当前目录下,命令quit退出
· windows下安装filezilla客户端软件,进行测试
15.4 Xshell使用xftp传输文件
· 在linux窗口界面下可按“Ctrl+Alt+F”组合键下载Xftp,安装后,点进已打开的会话界面,依然按“Ctrl+Alt+F”组合键可登录,并进行文件上传和下载
15.5 使用pure-ftpd搭建ftp服务(pure-ftpd更加简单)
· yum install -y epel-release #安装pure-ftpd包前先安装epel扩展源
· yum install -y pure-ftpd
· vim /etc/pure-ftpd/pure-ftpd.conf #编辑pure-ftpd配置文件,找到pureftpd.pdb这行,把行首的“#”删除,该行指定密码文件
· systemctl stop vsftpd #pure-ftpd也属于一个ftp软件,同样会监听21号端口,故启动pure-ftpd之前须将vsftpd服务停掉,否则端口冲突,会报错
· systemctl start pure-ftpd
· mkdir /data/ftp #创建测试目录,分配给pure-ftp用户
· useradd -u 1010 pure-ftp #创建系统用户
· chown -R pure-ftp:pure-ftp /data/ftp #将目录的属主和属组改为pure-ftp
· pure-pw useradd ftp_user1 -upure-ftp -d /data/ftp #创建用于ftp客户端登录的用户ftp_user1,“-u”选项指定系统用户pure-ftp,“-d”选项用于指定目录,该命令运行后会提示输入用户密码
· pure-pw mkdb #把密码生成系统可识别的文件
· pure-pw list/userdel/usermod/passwd #pure-pw常见用法:列出所有用户、删除用户、修改用户、修改用户密码
2、测试ftp
· touch /data/ftp/test123.txt #创建测试文件
· chown pure-ftp:pure-ftp/data/ftp/test123.txt #更改测试文件的属主和属组
· lftp ftp_user1@127.0.0.1 #使用已定义的用户登录测试