Linux文件服务器

文件服务器

一、Ftp 介绍

  • 文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP 基于TCP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输。用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。

  • FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。

  • 目前主流的FTP服务器端软件包括:Vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、 FileZilla Server等软件,其中Unix/Linux使用较为广泛的FTP服务器端软件为Vsftpd 。

  • 七层传输协议

    • 物理层 (bit 流 通过电流传输数据 网线和光纤)
    • 数据链路层(mac 地址 硬件地址 交换机就工作在数据链路层)
    • 网络层(ip 协议 )
    • 传输层(tcp 协议 路由器)
    • 会话层 ,表示层,应用层(http https ftp 软件服务)

    image-20240105093621823

二、Ftp 传输模式介绍

  • FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式,主被动模式均是以FTP服务器端为参照。

  • FTP主动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。

  • FTP被动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,客户端提交 PASV命令,服务器会开启一个任意的端口(P >1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

  • 企业实际环境中,如果FTP客户端与FTP服务端均开放防火墙,FTP需以主动模式工作,这样只需要在FTP服务器端防火墙规则中,开放20、21端口即可。

三、Vsftp 服务器简介

  • 非常安全的FTP服务进程(Very Secure FTP daemon,Vsftpd),Vsftpd在Unix/Linux发行版中最主流的FTP服务器程序,优点小巧轻快,安全易用、稳定高效、满足企业跨部门、多用户的使用(1000用户)等。

  • Vsftpd基于GPL开源协议发布,在中小企业中得到广泛的应用,Vsftpd可以快速上手,基于Vsftpd虚拟用户方式,访问验证更加安全。Vsftpd还可以基于MYSQL数据库做安全验证,多重安全防护。

四、Vsftp 的登陆类型

  • VSFTP提供了系统用户、匿名用户、和虚拟用户三种不同的登陆方式。所有的虚拟用户会映射成一个系统用户,访问时的文件目录是为此系统用户的家目录;匿名用户也是虚拟用户,映射的系统用户为ftp,详细信息可以通过man vsftpd.conf查看

五、Vsftp 安装配置

1、环境需求

  • 服务端系统:CentOS7.9; 软件: vsftpd

  • 客户端系统:Windows10 ; 软件:xftp客户端

2、安装 epel 源

[root@smx ~]# yum -y install epel-release.noarch

3、安装 vsftpd 及相关依赖

[root@smx ~]# yum -y install vsftpd* pam*  db4*
  • vsftpd: ftp软件
  • pam:认证模块
  • DB4:支持文件数据库

4、vsftpd 配置文件说明

配置文件作用
/etc/vsftpd/vsftpd.confvsftpd的核心配置文件
/etc/vsftpd/ftpusers用于指定哪些用户不能访问FTP服务器
/etc/vsftpd/user_list指定允许使用vsftpd的用户列表文件
/etc/vsftpd/vsftpd_conf_migrate.sh是vsftpd操作的一些变量和设置脚本
/var/ftp/默认情况下匿名用户的根目录

5、vsftpd 配置详解

属性属性值含义
anonymous_enableYES/NO是否允许匿名用户(anonymous)登录 FTP,如果该设置被注释,则默认允许
local_enableYES/NO是否允许本地系统用户登录
write_enableYES/NO是否开启任何形式的 FTP 写入命令,上传文件
local_umaskxxx本地用户的 umask 设置,如果注释该设置则默认为 077,但一般都设置成 022
anon_upload_enableYES/NO是否允许匿名用户上传文件,如果要设置为允许,则需要先开启 write_enable,否则无效,此外对应目录还要具有写权限
anon_mkdir_write_enableYES/NO是否允许匿名用户创建新目录
dirmessage_enableYES/NO当进入某个目录时,发送信息提示给远程用户
xferlog_enableYES/NO是否开启 上传/下载 的日志记录
connect_from_port_20YES/NO是否使用 20 端口来连接 FTP
chown_uploadsYES/NO匿名上传的文件是否由某一指定用户 chown_username 所有
chown_username有效用户名匿名上传的文件由该设定用户所有
xferlog_file有效路径设置日志文件的保存位置,默认为 /var/log/xferlog
xferlog_std_formatYES/NO是否使用标准的 ftpd xferlog日志格式,该格式日志默认保存在 /var/log/xferlog
idle_session_timeout数值设置空闲连接的超时时间,单位 秒
data_connection_timeout数值设置等待数据传输的最大时间,单位 秒(data_connection_timeout 与 idle_session_timeout 在同一时间只有一个有效)
nopriv_user有效用户名指定一个非特权用户,用于运行 vsftpd
async_abor_enableYES/NO是否支持异步 ABOR 请求
ascii_upload_enableYES/NO是否开启 ASCII 模式进行文件上传,一般不开启
ascii_download_enableYES/NO是否开启 ASCII 模式进行文件下载,一般不开启
ftpd_banner自定义登录标语
deny_email_enableYES/NO如果匿名登录,则会要求输入 email 地址,如果不希望一些 email 地址具有登录权限,则可以开启此项,并在 banned_email_file 指定的文件中写入对应的 email 地址
banned_email_file有效文件当开启 deny_email_enable 时,需要通过此项指定一个保存登录无效 email 的文件
chroot_local_userYES/NO是否将所有用户限制在主目录,当为 NO 时, FTP 用户可以切换到其他目录
chroot_list_enableYES/NO是否启用限制用户的名单列表
chroot_list_file有效文件用户列表,其作用与 chroot_local_user 和 chroot_local_user 的组合有关,详见下表
allow_writeable_chrootYES/NO是否允许用户对 ftp 根目录具有写权限,如果设置成不允许而目录实际上却具备写权限,则会报错
ls_recurse_enableYES/NO是否允许 ls -R 指令来递归查询,递归查询比较耗资源
listenYES/NO如果为 YES,vsftpd 将以独立模式运行并监听 IPv4 的套接字,处理相关连接请求(该指令不能与 listen_ipv6 一起使用)
listen_ipv6YES/NO是否允许监听 IPv6 套接字
pam_service_name设置 PAM 外挂模块提供的认证服务所使用的配置文件名 ,即 /etc/pam.d/vsftpd 文件,此文件中 file=/etc/vsftpd/ftpusers 字段,说明了 PAM 模块能抵挡的帐号内容来自文件 /etc/vsftpd/ftpusers 中
userlist_enableYES/NO是否启用 user_list 文件来控制用户登录
userlist_denyYES/NO是否拒绝 user_list 中的用户登录,此属性设置需在 userlist_enable = YES 时才有效
tcp_wrappersYES/NO是否使用 tcp_wrappers 作为主机访问控制方式
max_clients数值同一时间允许的最大连接数
max_per_ip数值同一个IP客户端连接的最大值
local_root有效目录系统用户登录后的根目录
anon_root有效目录匿名用户登录后的根目录
user_config_dir有效目录用户单独配置文件存放目录,该目录下用户的文件名就是对应用户名
  • chroot_local_user 和 chroot_local_user 组合功能
chroot_local_user=YESchroot_local_user=NO
chroot_list_enable=YES1.所有用户都被限制在其主目录下2.使用 chroot_list_file 指定的用户列表 /etc/vsftpd/chroot_list,这些用户作为“例外”,不受限制1.所有用户都不被限制其主目录下2.使用 chroot_list_file 指定的用户列表 /etc/vsftpd/chroot_list,这些用户作为“例外”,受到限制
chroot_list_enable=NO1.所有用户都被限制在其主目录下2.不使用 chroot_list_file 指定的用户列表 /etc/vsftpd/chroot_list,没有任何“例外”用户1.所有用户都不被限制其主目录下2.不使用 chroot_list_file 指定的用户列表 /etc/vsftpd/chroot_list,没有任何“例外”用户

6、vsftpd 修改配置前备份配置文件

[root@smx ~]# cd /etc/vsftpd/
[root@smx vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@smx vsftpd]# cp vsftpd.conf{,.bak}
[root@smx vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh

7、vsftpd 配置匿名用户

1、编辑配置文件
[root@smx vsftpd]# vim vsftpd.conf
write_enable=YES

anon_umask=022
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
2、常用的匿名FTP配置项
anonymous_enable=YES                        # 是否允许匿名用户访问
anon_umask=022                              # 匿名用户所上传文件的权限掩码
anon_root=/var/ftp                          # 设置匿名用户的FTP根目录
anon_upload_enable=YES                      # 是否允许匿名用户上传文件
anon_mkdir_write_enable=YES                 # 是否允许匿名用户允许创建目录
anon_other_write_enable=YES               	# 是否允许匿名用户有其他写入权(改名,删除,覆盖)
anon_max_rate=0                             # 限制最大传输速率(字节/秒)0为无限制

dirmessage_enable=YES   				   # 当进入某个目录时,发送信息提示给远程用户 
xferlog_enable=YES      				   # 开启 上传/下载 的日志记录  
connect_from_port_20=YES 				   # 使用 20 端口来连接 FTP    
xferlog_std_format=YES 					   # 使用标准的 ftpd xferlog日志格式,该格式日志默认保存在 /var/log/xferlog |
listen=YES   							  # vsftpd 以独立模式运行并监听 IPv4 的套接字,     

pam_service_name=vsftpd		                # 设置 PAM 外挂模块提供的认证服务所使用的配置文件名 ,即 /etc/pam.d/vsftpd 文件,
userlist_enable=YES                         # 启用 user_list 文件来控制用户登录     
tcp_wrappers=YES                            # 使用 tcp_wrappers 作为主机访问控制方式  
3、开启 vsftp 服务
[root@smx vsftpd]# systemctl start vsftpd
[root@smx vsftpd]# netstat -lnpt |grep vsftpd
tcp    0   0 0.0.0.0:21       0.0.0.0:*        LISTEN   34531/vsftpd
4、客户端登陆验证

img

5、登录成功

img

6、修改权限实现上传
[root@smx vsftpd]# cd /var/ftp/
[root@smx ftp]# ls
pub
[root@smx ftp]# chown -R ftp.ftp pub/
[root@smx ftp]# ll
total 0
drwxr-xr-x 2 ftp ftp 6 Oct 31  2018 pub
  • 重点:改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而pub默认的属主属组是root。

  • 注意:

    • 修改完配置之后需要重启完服务才能生效
    • 还需要从新从客户端登陆,否则修改后的配置看不到效果。

8、vsftp 配置本地(系统)用户

1、创建测试用户
  • 创建 zhangsan、lisi 密码都设置为 “123456”
[root@smx ~]# useradd zhangsan
[root@smx ~]# useradd lisi
[root@smx ~]# echo "123456" | passwd --stdin zhangsan
[root@smx ~]# echo "123456" | passwd --stdin lisi
2、修改配置文件
[root@smx ~]# vim /etc/vsftpd/vsftpd.conf
local_enable=YES
local_umask=077
chroot_local_user=YES
allow_writeable_chroot=YES
write_enable=YES

dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES

pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES
3、常用的本地用户FTP配置项
local_enable=YES                                    # 是否允许本地系统用户访问
local_umask=022                                     # 本地用户所上传文件的权限掩码
local_root=/var/ftp                                 # 设置本地用户的FTP根目录
chroot_list_enable=YES                            	# 表示是否开启chroot的环境,默认没有开启
chroot_list_file=/etc/vsftpd/chroot_list        	# 表示写在/etc/vsftpd/chroot_list文件里面的用户是不可以出chroot环境的。默认是可以的。
Chroot_local_user=YES                             	# 表示所有写在/etc/vsftpd/chroot_list文件里面的用户是可以出chroot环境的,和上面的相反。
local_max_rate=0                                    # 限制最大传输速率(字节/秒)0为无限制

dirmessage_enable=YES   				   # 当进入某个目录时,发送信息提示给远程用户 
xferlog_enable=YES      				   # 开启 上传/下载 的日志记录  
connect_from_port_20=YES 				   # 使用 20 端口来连接 FTP    
xferlog_std_format=YES 					   # 使用标准的 ftpd xferlog日志格式,该格式日志默认保存在 /var/log/xferlog |
listen=YES   							  # vsftpd 以独立模式运行并监听 IPv4 的套接字,     

pam_service_name=vsftpd		                # 设置 PAM 外挂模块提供的认证服务所使用的配置文件名 ,即 /etc/pam.d/vsftpd 文件,
userlist_enable=YES                         # 启用 user_list 文件来控制用户登录
userlist_deny=NO                            # 不拒绝 user_list 中的用户登录,此属性设置需在 userlist_enable = YES 时才有效
tcp_wrappers=YES                            # 使用 tcp_wrappers 作为主机访问控制方式  
4、添加用户到白名单
[root@smx ~]# vim /etc/vsftpd/user_list 
zhangsan
lisi
5、重启服务
[root@smx ~]# systemctl restart vsftpd 
6、登陆测试

img

7、登陆成功

img

8、添加并进行测试
[root@smx ~]# cd /home/zhangsan/
[root@smx zhangsan]# touch zhangsan.txt    

img

9、vsftp 配置虚拟用户(了解)

1、建立虚拟 FTP 用户的帐号
[root@smx ~]# useradd -s /sbin/nologin vu
2、创建虚拟用户文件
[root@smx ~]# cd /etc/vsftpd/
[root@smx vsftpd]# vim user
wangwu
12345
maliu
12345
  • 基数行代表用户名,偶数行代表密码
3、创建数据文件
  • 通过 db_load 工具创建出 Berkeley DB 格式的数据库文件
[root@smx vsftpd]# db_load -T -t hash -f user user.db
[root@smx vsftpd]# ls
ftpusers user user.db user_list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh
  • -f 指定数据原文件
  • -T 允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件
  • -t hash 读取文件的基本方法
4、建立支持虚拟用户的PAM认证文件
[root@smx vsftpd]# vim /etc/pam.d/vsftpd.vu
auth    required   /lib64/security/pam_userdb.so db=/etc/vsftpd/user
account  required   /lib64/security/pam_userdb.so db=/etc/vsftpd/user
  • 对应刚才生成 user.db 的文件
5、修改配置文件
[root@smx vsftpd]# vim vsftpd.conf
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=YES
guest_enable=YES
guest_username=vu
pam_service_name=vsftpd.vu
local_enable=YES
local_umask=077
chroot_local_user=YES
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/user_dir
6、常用的全局配置项
listen=YES                                          # 是否以独立运行的方式监听服务
listen_address=192.168.4.1                       	# 设置监听FTP服务的IP地址
listen_port=21                                      # 设置监听FTP服务的端口号
write_enable=YES                                    # 是否启用写入权限(上传,删除文件)
download_enable=YES                                # 是否允许下载文件
dirmessage_enable=YES                           	# 用户切换进入目录时显示.message文件
xferlog_enable=YES                                  # 启用日志文件,记录到/var/log/xferlog
xferlog_std_format=YES                             	# 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式
connect_from_port_20=YES                       		# 允许服务器主动模式(从20端口建立数据连接)
pasv_enable=YES                                     # 允许服务器被动模式
pasv_max_port=24600                                	# 设置被动模式服务器的最大端口号
pasv_min_port=24500                                 # 设置被动模式服务器的最小端口号
pam_service_name=vsftpd                          	# 用户认证的PAM文件位置
(/etc/pam.d/vsftpd.vu)
userlist_enable=YES                                 # 是否启用user_list列表文件
userlist_deny=YES                                   # 是否禁用user_list中的用户
max_clients=0                                       # 限制并发客户端连接数
max_per_ip=0                                        # 限制同一IP地址的并发连接数
tcp_wrappers=YES                                    # 是否启用tcp_wrappers主机访问控制
chown_username=root                                 # 表示匿名用户上传的文件的拥有人是root,默认关闭
ascii_upload_enable=YES                             # 表示是否允许用户可以上传一个二进制文件,默认是不允许的
ascii_download_enable=YES                         	# 这个是代表是否允许用户可以下载一个二进制文件,默认是不允许的
nopriv_user=vsftpd                                  # 设置支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户
async_abor_enable=YES                               # 设定支持异步传输功能
ftpd_banner=Welcome to Awei FTP servers   			# 设定Vsftpd的登陆标语
guest_enable=YES             				 # 设置启用虚拟用户功能
guest_username=ftpuser         				  # 指定虚拟用户的宿主用户
virtual_use_local_privs=YES        			    # 设定虚拟用户的权限符合他们的宿主用户
user_config_dir=/etc/vsftpd/vconf      			 # 设定虚拟用户个人Vsftp的配置文件存放路径
7、为用户建立独立的配置目录及文件
[root@smx vsftpd]# mkdir /etc/vsftpd/user_dir
[root@smx vsftpd]# ls
ftpusers user user.db user_dir user_list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh
[root@smx vsftpd]# cd /etc/vsftpd/user_dir
[root@smx user_dir]# vim wangwu
local_root=/etc/vsftpd/data            # 虚拟用户数据的存放路径
8、创建虚拟用户数据存放目录
[root@smx user_dir]# cd ..
[root@smx vsftpd]# mkdir data
[root@smx vsftpd]# chmod 777 data/
9、重启服务
[root@smx ~]# systemctl restart vsftpd
10、登陆测试

img

11、登陆成功。添加文件进行测试
[root@smx vsftpd]# cd data/
[root@smx data]# touch wangwu.txt

在这里插入图片描述

  • 重点:本地用户和虚拟用户不能同时登录、因为认证方式只有一种

  • 本地是 pam_service_name =vsftpd

  • 虚拟是 pam_service_name =vsftpd.vu

六、Ftp 客户端 lftp

1、lftp 介绍

  • lftp命令 是一款优秀的文件客户端程序,它支持ftp、SETP、HTTP和FTPs等多种文件传输协议。lftp支持tab自动补全,记不得命令双击tab键,就可以看到可能的选项了。

2、lftp 语法

lftp(选项)(参数)

3、lftp 选项

-f:指定lftp指令要执行的脚本文件;
-c:执行指定的命令后退出;
--help:显示帮助信息;
--version:显示指令的版本号。

4、lftp 参数

  • 站点:要访问的站点的 ip 地址或者域名。

5、lftp 使用实例

1、登录ftp
lftp 用户名:密码@ftp地址:传送端口(默认21)
  • 也可以先不带用户名登录,然后在接口界面下用login命令来用指定账号登录,密码不显示。
2、查看文件与改变目录
ls
cd   # 对应ftp目录
3、下载
  • get当然是可以的,还可以:
mget -c *.pdf    			# 把所有的pdf文件以允许断点续传的方式下载。
mirror aaa/      			# 将aaa目录整个的下载下来,子目录也会自动复制。
pget -c -n 10 file.dat   	# 以最多10个线程以允许断点续传的方式下载file.dat,可以通过设置pget:default-n的值而使用默认值。
4、上传
  • 同样的put、mput都是对文件的操作,和下载类似。
mirror -R 本地目录名
  • 将本地目录以迭代(包括子目录)的方式反向上传到ftp site。
5、模式设置
set ftp:charset gbk  # gpk是国标字符集
  • 远程ftp site用gbk编码,对应的要设置为utf8,只要替换gbk为utf8即可。
set file:charset utf8  # utf8是万国码,全世界通用的语
  • 本地的charset设定为utf8,如果你是gbk,相应改掉。
set ftp:passive-mode 1
  • 使用被动模式登录,有些site要求必须用被动模式或者主动模式才可以登录,这个开关就是设置这个的。0代表不用被动模式。

6、书签

  • 其实命令行也可以有书签,在lftp终端提示符下:
bookmark add ustc
  • 就可以把当前正在浏览的ftp site用ustc作为标签储存起来。以后在shell终端下,直接lftp ustc就可以自动填好用户名和密码,进入对应的目录了。
bookmark edit
  • 会调用编辑器手动修改书签。当然,也可以看到,这个书签其实就是个简单的文本文件。密码,用户名都可以看到。

7、配置文件

[root@smx ~]#  vim /etc/lftp.conf
  • 一般添加这几行:
set ftp:charset gbk
set file:charset utf8
set pget:default-n 5
  • 这样,就不用每次进入都要打命令了。其他的 set 可以自己 tab 然后 help 来看

七、网络文件系统NFS

1、NFS 服务器介绍

1、NFS 介绍
  • NFS 全称是 Network FileSystem,NFS 和其他文件系统一样,是在 Linux 内核中实现的,因此 NFS 很难做到与 Windows 兼容。NFS 共享出的文件系统会被客户端识别为一个文件系统,客户端可以直接挂载并使用。

  • NFS 的实现使用了 RPC(Remote Procedure Call) 的机制,远程过程调用使得客户端可以调用服务端的函数。由于有 VFS 的存在,客户端可以像使用其他普通文件系统一样使用 NFS 文件系统,由操作系统内核将 NFS 文件系统的调用请求通过 TCP/IP 发送至服务端的 NFS 服务,执行相关的操作,之后服务端再讲操作结果返回客户端。

img

  • NFS 文件系统仅支持基于 IP 的用户访问控制,NFS 是在内核实现的,因此 NFS 服务由内核监听在 TCP 和 UDP 的 2049 端口,对于 NFS 服务的支持需要在内核编译时选择。它同时还使用了几个用户空间进程用于访问控制,用户映射等服务,这些程序由 nfs-utils 程序包提供。

  • RPC 服务在 CentOS 6.5 之后改名为 portmapper,它监听在 TCP/UDP 的 111 端口,其他基于 RPC 的服务进程需要监听时,先像 RPC 服务注册,RPC 服务为其分配一个随机端口供其使用。客户端在请求时,先向 RPC 服务请求对应服务监听的端口,然后再向改服务发出调用请求。

2、安装配置 NFS 服务

1、添加 hosts 解析
[root@nfs.smx ~]# vim /etc/hosts [可选]
10.0.0.120  nfs.smx
10.0.0.121  client.smx
2、安装 NFS 服务器
[root@nfs.smx ~]# yum install -y nfs-utils
3、创建 NFS 存储目录
[root@nfs.smx ~]# mkdir /data                                            //
4、配置 NFS 服务
  • 编辑exports文件,添加从机
[root@nfs.smx ~]# vim /etc/exports
/data        10.0.0.120/24(rw,sync,no_root_squash) 
  • 192.168.122.0/24 一个网络号的主机可以挂载 NFS服务器上的 /data 目录到自己的文件系统中
5、NFS 定制参数说明
  • ro:目录只读
  • rw: 这个选项允许 NFS 客户机进行读/写访问。缺省选项是只读的。
  • secure: 这个选项是缺省选项,它使用了 1024 以下的 TCP/IP 端口实现 NFS 的连接。指定 insecure 可以禁用这个选项。
  • async: 这个选项可以改进性能,但是如果没有完全关闭 NFS 守护进程就重新启动了 NFS 服务器,这也可能会造成数据丢失。
  • no_wdelay: 这个选项关闭写延时。如果设置了 async,那么 NFS 就会忽略这个选项。
  • nohide: 如果将一个目录挂载到另外一个目录之上,那么原来的目录通常就被隐藏起来或看起来像空的一样。要禁用这种行为,需启用 hide 选项。
  • no_subtree_check: 这个选项关闭子树检查,子树检查会执行一些不想忽略的安全性检查。缺省选项是启用子树检查。
  • no_auth_nlm: 这个选项也可以作为 insecure_locks 指定,它告诉 NFS 守护进程不要对加锁请求进行认证。如果关心安全性问题,就要避免使用这个选项。缺省选项是 auth_nlm 或 secure_locks。
  • mp (mountpoint=path): 通过显式地声明这个选项,NFS 要求挂载所导出的目录。
  • fsid=num: 这个选项通常都在 NFS 故障恢复的情况中使用。如果希望实现 NFS 的故障恢复,请参考 NFS 文档。
6、NFS 用户映射的选项
  • 在使用 NFS 挂载的文件系统上的文件时,用户的访问通常都会受到限制,这就是说用户都是以匿名用户的身份来对文件进行访问的,这些用户缺省情况下对这些文件只有只读权限。如果用户希望以 root 用户或锁定义的其他用户身份访问远程文件系统上的文件,NFS 允许指定访问远程文件的用户——通过用户标识号(UID)和组标识号(GID)进行用户映射。
  • root_squash: 这个选项不允许 root 用户访问挂载上来的 NFS 卷。
  • no_root_squash: 这个选项允许 root 用户访问挂载上来的 NFS 卷。
  • all_squash: 这个选项对于公共访问的 NFS 卷来说非常有用,它会限制所有的 UID 和 GID,只使用匿名用户。缺省设置是 no_all_squash。
  • anonuid 和 anongid: 这两个选项将匿名 UID 和 GID 修改成特定用户和组帐号。
6、设置 NFS 服务开机启动
1、先启动 rpcbind 服务
[root@nfs.smx ~]# systemctl enable rpcbind.service
[root@nfs.smx ~]# systemctl enable nfs-server.service
2、启动 NFS 服务
[root@nfs.smx ~]# systemctl start rpcbind.service
[root@nfs.smx ~]# systemctl start nfs-server.service 
7、确认 NFS 服务器启动
[root@nfs.smx ~]# exportfs -v
/data     192.168.122.0/24(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
  • rpcinfo -p:检查 NFS 服务器是否挂载我们想共享的目录 /data:
  • exportfs -r: 使配置生效

3、挂载端安装 NFS 客户端

1、安装 NFS 软件包
[root@client.smx ~]# yum -y install nfs-utils
2、设置 rpcbind 开机启动
[root@client.smx ~]# systemctl enable rpcbind.service
3、启动 rpcbind 服务
[root@client.smx ~]# systemctl start rpcbind.service
  • 注意:客户端不需要启动 nfs 服务
4、查看 NFS 服务端共享
  • 检查 NFS 服务器端是否有目录共享:showmount -e nfs服务器IP/nfs服务器主机名
[root@client.smx ~]# showmount -e 10.0.0.120
Export list for 10.0.0.120     :
/data 10.0.0.120
5、挂在使用 NFS 存储
1、手动挂载
[root@client.smx ~]# mkdir  /data
[root@client.smx ~]# mount -t nfs nas:/data /data         -t type类型https://github.com/ 
[root@client.smx ~]# umount /data
2、开机自动挂载
[root@client.smx ~]# vim /etc/fstab
nas:/data      /data           nfs     defaults        0 0
[root@client.smx ~]# mount -a
3、查看挂载
[root@client.smx ~]# df
nas:/data     7923136 692416   6821568  10% /data
  • 如果服务器端修改了 NFS 的配置,而又不想重启 NFS 服务(因为有客户端正在使用)可以使用 exportfs 命令重新载入 NFS 配置。
    • export -ar: 重新导出所有的文件系统
    • export -au: 关闭导出的所有文件系统
    • export -u FS: 关闭指定的导出的文件系
4、查看 RPC 服务列表
[root@client.smx ~]# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 54525 status
100024 1 tcp 36141 status
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习运维的欣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值