NFS服务端安装配置



准备两台机器,一个做服务端,一个做客户端



服务器端:192.168.176.135 客户端:192.168.176.134



服务器端操作:



安装两个包 nfs-utils rpcbind



[root@ma-1 ~]# yum install -y nfs-utils rpcbind



安装完后编辑export



[root@ma-1 ~]# vim /etc/exports



加入下面内容



/home/nfstestdir 192.168.176.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)



字段理解



#/home/nfstestdir :需要共享挂载的目录



#192.168.8.0/24:共享网段的权限,也可以是IP



保存配置文件后,执行如下准备操作



[root@ma-1 ~]# mkdir /home/nfstestdir //创建分享的目录





[root@ma-1 ~]# chmod 777 /home/nfstestdir //共享目录设置777权限







#systemctl start nfs //启动nfs服务,rpcbind默认监听端口111





#systemctl enable rpcbind //设置开机启动



#systemctl enable nfs //开机启动nfs



客户端的配置 



安装 nfs-utils



[root@shuai-02 ~]# yum install -y nfs-utils //安装包



查看是否有权限连接



[root@shuai-02 ~]# showmount -e 192.168.176.135



Export list for 192.168.176.135:



/home/nfstestdir 192.168.176.0/24



错误:



[root@shuai-02 ~]# showmount -e 192.168.176.135



clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)



如果都配置完成了,但是连接有错误,查看nfs服务是否开启,可以检查一下机器防火墙(iptables or firewalld or selinux)



Export list for 192.168.176.135:



/home/nfstestdir 192.168.176.0/24



//服务器机的/home/nfstestdir目录,共享给了192.168.176.0/24网段



在客户机上挂载:



[root@shuai-02 ~]# mount -t nfs 192.168.176.135:/home/nfstestdir /mnt/



[root@shuai-02 ~]# df -h



文件系统 容量 已用 可用 已用% 挂载点



/dev/sda3 18G 1.1G 17G 6% /



devtmpfs 479M 0 479M 0% /dev



tmpfs 489M 0 489M 0% /dev/shm



tmpfs 489M 6.7M 482M 2% /run



tmpfs 489M 0 489M 0% /sys/fs/cgroup



/dev/sda1 197M 109M 88M 56% /boot



tmpfs 98M 0 98M 0% /run/user/0



192.168.176.135:/home/nfstestdir 18G 7.0G 11G 40% /mnt



客户机创建文件,指定为1000



[root@shuai-02 mnt]# touch test



[root@shuai-02 mnt]# ls -l



总用量 0



-rw-r--r--. 1 1000 1000 0 1月 21 21:00 test



-rw-r--r--. 1 1000 1000 0 1月 21 20:51 test.log



服务器机创建文件:



[root@ma-1 mnt]# touch test.log



[root@ma-1 ~]# ls -l /home/nfstestdir/



总用量 0



-rw-r--r--. 1 shuai shuai 0 1月 21 21:00 test



-rw-r--r--. 1 shuai shuai 0 1月 21 20:51 test.log





NFS配置选项



rw:读写; 



ro :只读 



sync:(同步)将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性; 



async:(异步)将数据先保存在内存缓冲区中,必要时才写入磁盘; 



all_squash:所有访问用户都映射为匿名用户或用户组(这里指的/etc/exports定义的用户); 



no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组; 



anonuid=1000,anongid=1000:uid:1000;gid=1000 



no_root_squash 客户端挂载NFS服务后,root用户不受约束,权限很大 



root_squash 与上面选项相对,客户端上的root用户受到约束,被限定成某个普通用户



exports命令



exportfs命令服务器端的操作  



exportfs命令用来管理当前NFS共享的文件系统列表



命令:exports 



选项:



-a:全部卸载或全部挂载 



-r:重新挂载 



-u:卸载某个目录 



-v:显示共享目录 



常用组合: exportfs -arv 



服务端更改配置文件后,不重启服务,直接执行该命令就可以使更改后的配置文件生效。



注意: 在重启nfs服务之前需要先将所有挂载点卸载,否则将发生程序错误



NFS客户端问题



NFS 4版本的问题



客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、数组为nobody



解决方法:



方法1:在客户端进行挂载时加上选项-o nfsvers=3


monunt -t nfs -o nfsvers=3 192.168.176.135:/tmp/ /mnt/
 
 
如果目录已经挂载,而又不想卸载,执行如下命令:
 
 
monunt -t nfs -o remount,nfsvers=3 192.168.176.135:/tmp/ /mnt/

方法2:客户端和服务端都需要



vim /etc/idmapd.conf



把该配置文件中的“Domain =  local.domain.com ”改为“Domain =  xxx.com ”(此处 xxx.com 自定义),然后重启rpcidmapd服务(在centos7中直接重启rpcbind服务)。



FTP介绍



当使用跳板机连接时,rz工具就不好使用,此时FTP可以解决该问题。



FTP(file transfer protocol)文件传输协议,用于在Internet上控制文件的双向传输。FTP主要作用是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷贝到本地计算机,或把本地文件传送到远程计算机。 



该服务在小公司用的比较多,由于FTP服务的安全性较差,所以大公司不使用该服务。



使用vsftpd搭建ftp



安装vsftpd工具



centos中默认自带vsftpd安装包。


[root@ma-1 ~]# yum install -y vsftpd



创建用户:



[root@ma-1 ~]# useradd -s /sbin/nologin virftp
 
   
//-s 指定shell 不能登录



vsftpd可以使用系统级别的用户进行登录,但是这样做不安全,所以需要使用vsftpd创建一个虚拟用户。在此创建一个系统普通用户的作用是使vsftpd的虚拟用户来进行映射,然后完成数据的传输。



编辑密码文件

[root@ma-1 ~]# vim /etc/vsftpd/vsftpd_login
 
   
 
    
 
   
testuser1
 
   
shuai
 
   
user1
 
   
111111
 
 
奇数行为用户名,偶数行为密码,多个用户就写多行 
 
 
这里,1,3行尾用户名 2 ,4行为密码
 
 
设置密码文件权限
 
 
[root@localhost ~]# chmod 600 /etc/vsftpd/vsftpd_login
 
 
将密码文本文件转化成二进制文件
 
 
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
 
 
创建虚拟用户目录和虚拟用户配置文件
 
 
[root@localhost ~]# mkdir /etc/vsftpd/vsftpd_user_conf
 
   
[root@localhost ~]# cd /etc/vsftpd/vsftpd_user_conf
 
 
定义虚拟用户配置文件时,文件名需要和密码文件定义的用户名保持一致,我这里定义的为testuser1
 
 
[root@localhost 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 #链接ftp超时时间
 
   
data_connection_timeout=120 #数据传输的超时时间
 
   
max_clients=10 #最大的客户端
 
 
在此保持虚拟用户配置文件和虚拟用户名称一致。
 
 
创建虚拟用户家目录
 
 
[root@ma-1 vsftpd_user_conf]# mkdir /home/virftp/testuser1
 
 
家用户目录下,创建一个文件
 
 
[root@localhost vsftpd_user_conf]# touch /home/virftp/testuser1/test.txt
 
 
改一下全限
 
 
[root@localhost vsftpd_user_conf]# chown -R virftp:virftp /home/virftp
 
 
定义密码文件路径
 
 
[root@ma-1 vsftpd_user_conf]# 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



nfs挂载 Stale file handle_centos



编辑vsftpd主配置文件



[root@localhost ~]# 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
 
   
 
    
 
   
[root@localhost ~]# systemctl start vsftpd
 
 
客户端测试
 
 
如果在Windows系统进行测试,可以在Windows安装filezilla软件。在Linux中测试,安装lftp工具。
 
 
filezilla工具 lftp工具
 
 
# yum install -y lftp
 
 
用法:
 
 
[root@localhost ~]# lftp ggg@127.0.0.1
 
 
口令:
 
 
#登录
 
   
lftp testuser1@127.0.0.1:~> ls
 
   
drwxr-xr-x 2 1002 1002 22 Aug 24 10:19 testuser1
 
   
lftp testuser1@127.0.0.1:/> ?
 
   
#查询在lftp中可执行的命令
 
   
#常用命令:put、get
 
   
lftp testuser1@127.0.0.1:/> get testuser1/adai.txt
 
   
lftp testuser1@127.0.0.1:/> quit



xshell使用xftp传输文件



下载Xshell的Xftp插件: 



快捷键:Ctrl + Alt + F



在Xshell登录状态,快捷键:Ctrl + Alt + F 弹出XFtp 



默认状态:左边是Windows系统桌面,右边centos系统用户夹目录 



这两个系统,可以互传文件!! 




nfs挂载 Stale file handle_centos_02


使用pure-ftpd搭建ftp服务


安装epel-release和pure-ftpd:
  
[root@centos7 ~]# yum install -y pure-ftpd
  
编辑pure-ftpd.conf配置文件:
  
vim /etc/pure-ftpd/pure-ftpd.conf
  
找到pureftpd.pdb这行,把行首的#删除
  
关闭vsftpd服务(下面打开pure-ftpd服务 也需要占用21端口):
  
[root@centos7 ~]# systemctl stop vsftpd
    
[root@centos7 ~]# systemctl start pure-ftpd
  
查看pure-ftpd服务端口号:
  
[root@centos7 ~]# netstat -nutlp| grep 21
    
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 15034/pure-ftpd (SE
    
tcp6 0 0 :::21 :::* LISTEN 15034/pure-ftpd (SE
  
创建一个测试目录ftp:
  
[root@centos7 ~]# mkdir /data/ftp
  
创建一个普通用户,-u指定uid:
  
[root@centos7 ~]# useradd -u 1010 pure-ftp
  
把测试目录ftp,属主属组改为pure-ftp:
  
[root@centos7 ~]# chown -R pure-ftp:pure-ftp /data/ftp
  
创建虚拟用户,指定映射的系统用户,指定虚拟用户夹目录:
  
[root@centos7 ~]# pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp
   
Password:
   
Enter it again:
   
    
   
    
   
[root@centos7 ~]# pure-pw mkdb #必须执行这步,建立数据
   
[root@centos7 ~]# touch /data/ftp/123.txt


xshell使用xftp传输文件


xftp传输文件使用ssh协议进行传输文件,在Windows和linux之间。使用22端口。


下载xftp,安装。平常的Windows安装软件,一步一步来。安装完成后,登录xshell,选择一个远程连接的页面,使用组合键:Ctrl+Alt+F。使用xftp。


pure-ftpd搭建ftp服务


安装pure-ftpd,pure-ftpd在epel扩展源下。
  
[root@ma-1 ~]# yum install -y pure-ftpd
  
改配置:
  
[root@ma-1 ~]# vim /etc/pure-ftpd/pure-ftpd.conf
  

   找到#PureDB /etc/pure-ftpd/pureftpd.pdb  
 
  
   删除#号 
 
  
保存退出。
  
启动pure-ftpd服务,pure-ftpd是使用21端口,所以pure-ftpd与vsftpd是不能同时使用的。
  
[root@ma-1 ~]# systemctl start pure-ftpd
  
创建一个测试的目录
  
[root@ma-1 ~]# mkdir /data/ftp
  
创建一个用户:
  
[root@ma-1 ~]# useradd -u 1010 pure-ftp
  
更改测试目录的属组和属主:
  
[root@ma-1 ~]# chown -R pure-ftp:pure-ftp /data/ftp
  
创建虚拟用户
  
[root@ma-1 ~]# pure-pw useradd ftp-usera -u pure-ftp -d /data/ftp
    
Password:
    
Enter it again:
  

   创建虚拟用户并映射到系统用户pure-ftp上  
 
  

   -u 是指定系统用户  
 
  
   -d 是指定虚拟用户的家目录,也是系统用户的家目录 
 
  
先执行
  
[root@ma-1 ~]# pure-pw mkdb
  
然后才能登陆
  
测试:
  
先在/data/ftp创建一个文件(/data/ftp/123.txt)
  
[root@ma-1 ~]# touch /data/ftp/123.txt
    
     
    
[root@ma-1 ~]# lftp ftp_usera@127.0.0.1
  
问题:
  

   [root@ma-1 ~]# lftp ftp_usera@127.0.0.1  
 
  
   -bash: lftp: 未找到命令 
 
  
解决方法:
  
[root@ma-1 ~]# yum install -y lftp