文件服务器
一、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 软件服务)
二、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.conf | vsftpd的核心配置文件 |
/etc/vsftpd/ftpusers | 用于指定哪些用户不能访问FTP服务器 |
/etc/vsftpd/user_list | 指定允许使用vsftpd的用户列表文件 |
/etc/vsftpd/vsftpd_conf_migrate.sh | 是vsftpd操作的一些变量和设置脚本 |
/var/ftp/ | 默认情况下匿名用户的根目录 |
5、vsftpd 配置详解
属性 | 属性值 | 含义 |
---|---|---|
anonymous_enable | YES/NO | 是否允许匿名用户(anonymous)登录 FTP,如果该设置被注释,则默认允许 |
local_enable | YES/NO | 是否允许本地系统用户登录 |
write_enable | YES/NO | 是否开启任何形式的 FTP 写入命令,上传文件 |
local_umask | xxx | 本地用户的 umask 设置,如果注释该设置则默认为 077,但一般都设置成 022 |
anon_upload_enable | YES/NO | 是否允许匿名用户上传文件,如果要设置为允许,则需要先开启 write_enable,否则无效,此外对应目录还要具有写权限 |
anon_mkdir_write_enable | YES/NO | 是否允许匿名用户创建新目录 |
dirmessage_enable | YES/NO | 当进入某个目录时,发送信息提示给远程用户 |
xferlog_enable | YES/NO | 是否开启 上传/下载 的日志记录 |
connect_from_port_20 | YES/NO | 是否使用 20 端口来连接 FTP |
chown_uploads | YES/NO | 匿名上传的文件是否由某一指定用户 chown_username 所有 |
chown_username | 有效用户名 | 匿名上传的文件由该设定用户所有 |
xferlog_file | 有效路径 | 设置日志文件的保存位置,默认为 /var/log/xferlog |
xferlog_std_format | YES/NO | 是否使用标准的 ftpd xferlog日志格式,该格式日志默认保存在 /var/log/xferlog |
idle_session_timeout | 数值 | 设置空闲连接的超时时间,单位 秒 |
data_connection_timeout | 数值 | 设置等待数据传输的最大时间,单位 秒(data_connection_timeout 与 idle_session_timeout 在同一时间只有一个有效) |
nopriv_user | 有效用户名 | 指定一个非特权用户,用于运行 vsftpd |
async_abor_enable | YES/NO | 是否支持异步 ABOR 请求 |
ascii_upload_enable | YES/NO | 是否开启 ASCII 模式进行文件上传,一般不开启 |
ascii_download_enable | YES/NO | 是否开启 ASCII 模式进行文件下载,一般不开启 |
ftpd_banner | … | 自定义登录标语 |
deny_email_enable | YES/NO | 如果匿名登录,则会要求输入 email 地址,如果不希望一些 email 地址具有登录权限,则可以开启此项,并在 banned_email_file 指定的文件中写入对应的 email 地址 |
banned_email_file | 有效文件 | 当开启 deny_email_enable 时,需要通过此项指定一个保存登录无效 email 的文件 |
chroot_local_user | YES/NO | 是否将所有用户限制在主目录,当为 NO 时, FTP 用户可以切换到其他目录 |
chroot_list_enable | YES/NO | 是否启用限制用户的名单列表 |
chroot_list_file | 有效文件 | 用户列表,其作用与 chroot_local_user 和 chroot_local_user 的组合有关,详见下表 |
allow_writeable_chroot | YES/NO | 是否允许用户对 ftp 根目录具有写权限,如果设置成不允许而目录实际上却具备写权限,则会报错 |
ls_recurse_enable | YES/NO | 是否允许 ls -R 指令来递归查询,递归查询比较耗资源 |
listen | YES/NO | 如果为 YES,vsftpd 将以独立模式运行并监听 IPv4 的套接字,处理相关连接请求(该指令不能与 listen_ipv6 一起使用) |
listen_ipv6 | YES/NO | 是否允许监听 IPv6 套接字 |
pam_service_name | … | 设置 PAM 外挂模块提供的认证服务所使用的配置文件名 ,即 /etc/pam.d/vsftpd 文件,此文件中 file=/etc/vsftpd/ftpusers 字段,说明了 PAM 模块能抵挡的帐号内容来自文件 /etc/vsftpd/ftpusers 中 |
userlist_enable | YES/NO | 是否启用 user_list 文件来控制用户登录 |
userlist_deny | YES/NO | 是否拒绝 user_list 中的用户登录,此属性设置需在 userlist_enable = YES 时才有效 |
tcp_wrappers | YES/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=YES | chroot_local_user=NO | |
---|---|---|
chroot_list_enable=YES | 1.所有用户都被限制在其主目录下2.使用 chroot_list_file 指定的用户列表 /etc/vsftpd/chroot_list,这些用户作为“例外”,不受限制 | 1.所有用户都不被限制其主目录下2.使用 chroot_list_file 指定的用户列表 /etc/vsftpd/chroot_list,这些用户作为“例外”,受到限制 |
chroot_list_enable=NO | 1.所有用户都被限制在其主目录下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、客户端登陆验证
5、登录成功
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、登陆测试
7、登陆成功
8、添加并进行测试
[root@smx ~]# cd /home/zhangsan/
[root@smx zhangsan]# touch zhangsan.txt
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、登陆测试
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 服务,执行相关的操作,之后服务端再讲操作结果返回客户端。
-
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