NFS&FTP

内容摘要

  • NFS介绍
  • NFS服务端安装配置
  • NFS配置选项
  • exportfs命令
  • NFS客户端问题
  • FTP介绍
  • 使用vsftpd搭建ftp
  • xshell使用xftp传输文件
  • 使用pure-ftpd搭建ftp服务

一、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&FTP_第1张图片

二、NFS服务端安装配置

  • 在服务端安装:yum install -y nfs-utils rpcbind     
  • 编辑配置文件,加入以下内容:/home/nfstestdir 192.168.133.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
  • 创建共享的目录并设置权限:mkdir /home/nfstestdir && chmod 777 /home/nfstestdir
  • 启动rpcbind服务并设置开机启动: systemctl start rpcbind  && systemctl enable rpcbind  (一般安装完rpcbind会自动启动该服务)
  • 启动nfs服务并设置开机启动: systemctl start nfs && systemctl enable nfs
  •  查看系统监听的端口:nfs服务时通过rpcbind服务监听端口的

NFS&FTP_第2张图片

三、NFS配置选项

  • rw 读写
  •  ro 只读
  •  sync 同步模式,内存数据实时写入磁盘
  •  async 非同步模式
  •  no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大
  •  root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
  •  all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
  •  anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid

四、客户端挂载

  • 在客户端安装:yum install -y nfs-utils     (其实在安装nfs-utils包的时候会自动的安装rpcbind包)
  • 查看NFS服务端共享的目录:showmount -e 192.168.229.128 (该IP为NFS服务端的IP), 图中查看到的就是先前在服务端 /etc/exports 文件中设置的目录和IP段。

  • 出现如图报错时:需要将服务端所有rpc进程的端口都在防火墙允许通过,或者关闭防火墙。

  • 挂载指定的NFS共享目录:mount -t nfs 192.168.133.130:/home/nfstestdir /mnt
  1. 选项-t nfs  指定挂载的文件系统为NFS
  2. 指定NFS服务端IP和共享目录,并以:分隔
  • 查看当前挂载的目录:df -h

NFS&FTP_第3张图片

  • 测试
  1. 挂载完成后,在客户端的/mnt目录创建一个文件test.txt: touch /mnt/test.txt
  2. 客户端查看文件属主和属组为:uid=1000(zhaoyujie) gid=1000(zhaoyujie) 组=1000(zhaoyujie)
  3. 服务端查看文件属主和属组为:  uid=1000(test) gid=1000(test) 组=1000(test)
  4. 可以看到文件的gid和uid都是1000 ,这就是配置文件中anonuid/anungid的作用。无论客户端还是服务端,都会显示当前主机下anonuid/anungid设置的ID的用户。

五、exportfs命令常用选项

  • 常用选项
  1.  -a 全部挂载或者全部卸载
  2.  -r 重新挂载
  3.  -u 卸载某一个目录
  4.  -v 显示共享目录
  •  在服务端上新增一个共享目录的配置vim /etc/exports :/tmp/ 192.168.229.130(rw,sync,no_root_squash)
  • 使用命令 exportfs -arv 重新挂载NFS服务(不需要重启)
  • 查看NFS服务端共享的目录:

NFS&FTP_第4张图片

  • 测试
  1. 客户端挂载新增加的共享目录:mount -t nfs 192.168.229.128:/tmp/ /mnt
  2. 在客户端的/mnt/目录下创建文件:touch /mnt/test.txt
  3. 客户端查看文件属主和属组为:uid=0(root) gid=0(root) 组=0(root)
  4. 服务端查看文件属主和属组为:uid=0(root) gid=0(root) 组=0(root)
  5. 可以看到文件的gid和uid都是root,这就是配置文件中no_root_squash的作用,root用户的权限不受限制。

六、NFS客户端小问题——客户端文件属主属组nobody

  • 在NFS 4版本会有该问题
  • 客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组为nobody
  • 方案一,客户端挂载时将NFS版本指定为版本3:mount -t nfs -o nfsvers=3   192.168.229.128:/tmp/ /mnt 
  • 在客户端挂载状态下重新挂载(不卸载):mount -t nfs -oremount nfsvers=3   192.168.229.128:/tmp/ /mnt 
  • 方案二,客户端和服务端都需要编辑配置文件: vim /etc/idmapd.conf
  1.  把“#Domain = local.domain.edu” 改为 “Domain = xxx.com” (这里的xxx.com,随意定义吧),然后再重启rpcidmapd服务(centos7中没有该服务,可以重启rpcbind服务)

七、FTP介绍

  • FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。
  •  FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。
  •  小公司用的多,大企业不用FTP,因为不安全

八、使用vsftpd搭建ftp服务

  • centos自带vsftpd,最小化安装系统时需要使用yum安装:yum install -y vsftpd
  • vsftp,是可以使用系统用户来登录ftp服务的,但是这样很不安全。所以可以采用虚拟用户的形式来登录ftp服务器,可以将一个或多个虚拟用户映射给一个普通的系统用户。
  • 创建一个普通用户(安全起见该用户无法登陆系统):useradd -s /sbin/nologin virftp
  • 创建FTP虚拟的用户和密码文件:vim /etc/vsftpd/vsftpd_login     
  1. 其中奇数行为用户名,偶数行为密码

NFS&FTP_第5张图片

  • 修改虚拟的用户和密码文件文件的权限为600:chmod 600 /etc/vsftpd/vsftpd_login
  • 将该文件转换为一个二进制的用户密码文件:db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db

NFS&FTP_第6张图片

  • 创建存放虚拟用户配置文件的目录:mkdir /etc/vsftpd/vsftpd_user_conf
  • 进入创建好的目录cd /etc/vsftpd/vsftpd_user_conf,创建虚拟用户的配置配文件,这个配置文件的文件名需要与虚拟用户的用户名相同:touch test1 test2
  • 分别编辑这两个文件的配置内容:

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

  1. local_host指定的目录就是虚拟用户登录FTP服务后的根目录
  2. anonymous=NO  表示不允许匿名用户登录
  3. write_enable=YES 表示可写,可以上传、新建文件或目录
  4. local_umask=022 创建文件或目录的默认权限,和系统的umask保持一致即可
  5. anon_upload_enable=NO 表示不允许匿名用户上传,YES表示允许
  6. anon_mkdir_write_enable=NO  表示不允许匿名用户的创建和写入权限,如果为YES表示允许
  7. idle_session_timeout=600    空闲超时时间,链接超过指定的时间(单:位秒)自动断开
  8. data_connection_timeout=120 表示数据传输的超时时间。
  9. max_clients=10   表示这个用户可以同时登陆的客户端数量
  • 创建虚拟用户的local_root目录:mkdir /home/virftp/test1
  • 然后在这个目录下创建一个文件,用于之后的测试:touch /home/virftp/test1/test1.txt
  • 修改目录及文件的属主和属组:chmod -R virftp:virftp /home/virftp/test1/test1.txt
  • 编辑vsftpd用户认证配置文件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&FTP_第7张图片

  • 编辑vsftpd主配置文件 /etc/vsftpd/vsftpd.conf(修改前注意备份)
  1. 将anonymous_enable=YES 改为 anonymous_enable=NO  
  2.  将#anon_upload_enable=YES 改为 anon_upload_enable=NO
  3.  将#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO
  4.   再文末增加如下内容:

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

  • 启动vsftpd服务: systemctl start vsftpd
  • 查看进程和端口,默认监听21端口:

  • 在linux下使用lftp测试:
  1. 安装lftp:yum install -y lftp
  2. 连接服务端:lftp [email protected]

  1. lftp界面下输入问号 ? 可以查看在lftp下可以使用的命令
  2. lftp界面下使用命令get 指定一个ftp服务器上面的文件下载到本地当前目录。
  3. lftp界面下使用命令put指定一个文件上传到ftp服务器。
  • windows下使用软件FileZilla连接FTP服务器 :

NFS&FTP_第8张图片

  1. 上方分别输入ftp主机IP、用户名(ftp虚拟用户名)、密码、端口。
  2. 左侧为windows目录,右侧为FTP的目录。

九、xshell使用xftp传输文件

  • 在xshell下使用快捷键跳出xftp的下载传送链接:ctrl+alt+f
  • 填写相关信息后,将会把下载链接发送到你指定的邮箱。

NFS&FTP_第9张图片

  • 下载安装后,可以直接在连接的主机下使用快捷键ctrl+alt+f打开相关的传输界面(改传输使用22端口):

NFS&FTP_第10张图片

  • 左侧为windows目录,右侧为linux目录,传输下载可以在该界面操作。

十、使用pure-ftpd搭建ftp服务

  • 安装服务(epel扩展源中):yum install -y pure-ftpd
  • 关闭vsftpd服务:systemctl stop vsftpd
  • 在配置文件中找到pureftpd.pdb这行,把行首的#删除:vim /etc/pure-ftpd/pure-ftpd.conf 
  • 启动pure-ftpd服务:systemctl start pure-ftpd
  • 创建普通用户:useradd -u 1010 pure-ftp
  • 创建测试目录:mkdir /data/ftp
  • 修改测试目录属主和属组:chown -R pure-ftp:pure-ftp /data/ftp
  • 创建一个ftp的用户并设置密码:pure-pw useradd ftp_usera -u pure-ftp  -d /data/ftp
  1. useradd ftp_usera 创建ftp_usera的ftp用户
  2. -u pure-ftp 指定系统用户为pure-ftp
  3. -d指定目录
  • 创建密码认证文件(供系统识别认证必须执行该步骤否则无法登陆):pure-pw mkdb
  •  pure-pw list/userdel/usermod/passwd  分别表示查看,删除用户,修改权限,修改密码
  • 测试,连接ftp:pure-ftpd服务会显示文件的uid

NFS&FTP_第11张图片

你可能感兴趣的:(笔记)