Network File System 网络文件系统(centos 6)
![](https://img2023.cnblogs.com/blog/2465098/202306/2465098-20230614101741675-1325507358.png)
预备知识:
1 什么是程序、进程、线程?
- 程序 : 安装的软件就是程序
- 进程 : 运行的程序---就是进程
- 线程 : 运行的程序同时完成多个任务
2 NFS三个主要组件?
- Rpc.nfsd :它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器;(由nfs进程实现)
- Rpc.mount :主要功能是管理NFS的文件系统。客户端顺利通过nfsd登录NFS服务器后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证;(由mount进程实现)
- Portmap :主要功能是进行端口映射工作;(由Rpcbind进程实现)
一、本次实验环境:
实验环境:系统平台64位红帽6.4最小化安装,并关闭防火墙,禁用SELinux,配置好yum源
禁用SELinux :
vi /etc/selinux/config
中将SELINUX=enforcing其改为 SELINUX=disabled
禁用防火墙 :
# chkconfig ittables off
配置本地yum源 :
创建挂载目录:
[root@chenhao ~]#mkdir /mnt/cdrom
配置yum源:
[root@chenhao ~]# cat /etc/rc.local !/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local mount /dev/cdrom /mnt/cdrom
查看挂载状态:
[root@chenhao ~]# mount /dev/mapper/vg_chenhao-lv_root on / type ext4 (rw) /dev/sr0 on /mnt/cdrom type iso9660 (ro)
[root@chenhao ~]# ll /dev 总用量 0 crw-rw----. 1 root video 10, 175 11月 21 16:27 agpgart lrwxrwxrwx. 1 root root 3 11月 21 16:27 cdrom -> sr0 lrwxrwxrwx. 1 root root 3 11月 21 16:27 cdrw -> sr0
修改yum源配置文件:
[root@chenhao ~]# vim /etc/yum.repos.d/rhel-source.repo
[rhel-source] name=Red Hat Enterprise Linux $releasever - $basearch - Source baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/$releasever/en/os/SRPMS/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release [rhel-source-beta] name=Red Hat Enterprise Linux $releasever Beta - $basearch - Source baseurl=ftp://ftp.redhat.com/pub/redhat/linux/beta/$releasever/en/os/SRPMS/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release [rhel-source] name=Red Hat Enterprise Linux 6.5 baseurl=file:///mnt/cdrom/Server enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release ~ 查看yum源配置结果:
[root@chenhao ~]# yum repolist
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. rhel-source | 3.9 kB 00:00 ... repo id repo name status rhel-source Red Hat Enterprise Linux 6.5 3,690 repolist: 3,690
[root@chenhao ~]# yum list | grep dhcp
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. dhcp.x86_64 12:4.1.1-38.P1.el6 @rhel-source dhcp-common.x86_64 12:4.1.1-38.P1.el6 @anaconda-RedHatEnterpriseLinux-201311111358.x86_64/6.5 sblim-cmpi-dhcp.i686 1.0-1.el6 rhel-source sblim-cmpi-dhcp.x86_64 1.0-1.el6 rhel-source
重启 :
reboot
安装NFS :
yum install nfs-utils –y
安装完成后,将NFS设置为开机自启动 :
chkconfig nfs on
启动nfs :
server rpcbind start service nfs start
查看NFS进程 :
ps –eaf | grep nfs ps –eaf | grep mount ps –eaf | grep rpcbind
确定连接端口 :
netstat –anp | grep:111
配置NFS配置文件和命令
主配置文件 :
/etc/exports
NFS服务的管理命令 :
/etc/sbin/exports
记录NFS分享出来的目录完整的权限设置 :
/var/lib/nfs/etab
记录曾经登录过的客户端信息 :
/var/lib/nfs/xtab
设置NFS服务器共享目录以及访问权限
创建文件夹
mkdir /data mkdir /picture
设置文件夹权限:
chmod o=wrx /data chmod o=wrx /picture
创建文件到文件夹中:
ifconfig > /data/ifconfig.txt mount > /picture/mount.txt
编辑配置文件:
# vim /etc/exports /data 10.109.149/24(rw) /picture 10.109.149/24(ro)
重启nfs服务让设置生效
Service nfs restart
查看设置
cat /var/lib/nfs/etab
修改配置文件后,使其生效命令:
exportfs -r –v
linux客户端连接NFS命令
查看NFS发布的文件夹:
Showmount –e (NFS服务器地址)
挂载NFS文件夹的过程:
mkdir /mnt/data mkdir /mnt /picture
挂载
mount –n nfs 192.168.80.222:/prcture /mnt /picture mount –n nfs 192.168.80.222:/data /mnt /data
设置客户端开机自动挂载nfs服务器文件夹
# vim /etc/fstab 192.168.80.222:data /mnt/data nfs defaults 0 0 192.168.80.222:prcture /mnt /picture nfs defaults 0 0
重启即可生效
使用windows server作为nfs客户端
添加服务器角色-功能-nfs客户端
连接方法一:mount 192.168.80.222:/prcture K: 连接方法二:mount \\192.168.80.222\data j:
查看连接命令:
mount netstat –n
配置/etc/exports文件及设置nfs发布的权限
NFS服务的配置文件为/etc/exports,这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在,可能要使用vi手动建立,然后在文件里面写入配置内容。
# vi /etc/exports /data 192.168.80.0/24(rw) /picture 192.168.80.0/24(ro)
用户可以把需要共享的文件系统直接编辑到/etc/exports文件中,这样当NFS服务器重新启动时系统就会自动读取/etc/exports文件,从而告诉内核要输出的文件系统和相关的存取权限。在下面的例子中显示了/etc/exports文件中几个条目项的内容,被挂载在/pub目录下的文件系统具有只读访问权限,所有的计算机在访问文件系统的时候不必经过安全检查。编辑/etc/exports文件:
# vi /etc/exports /usr/sys/src -maproot=daemon host2 /usr/ports -ro -network 192.168.1.0
<输出目录>[客户端1选项(访问权限,用户映射,其他)] [客户端2选项(访问权限,用户映射,其他)]
a、 输出目录
- 输出目录是指NFS系统中需要共享给客户机使用的目录
b、 客户端
- 客户端是指网络中可以访问这个NFS输出目录的计算机
- 客户端常用的指定方式
- 指定IP地址的主机:192.168.0.200
- 指定子网中的所有主机:192.168.0.0/24、192.168.0.0/255.255.255.0
- 指定域名的主机:ZTJC.jdbinfo.com
- 所有的域中的主机:*. jdbinfo.com
- 所有的主机:*
c、 选项
选项用来设置输出目录的访问权限、用户映射等。
NFS主要有三类选项:
访问权限选项
- 设置输出目录只读:ro
- 设置输出目录读写:rw
用户映射选项
- all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnoboy),这是默认选项;
- no_all_squash:与all_squash取反(默认设置);
- root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
- no_root_squash:与root_squash取反(/data 192.168.80.0/24(rw,no_root_squash) ;
- anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地(UID=xxx);
- anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户账户(GID=xxx);
其它选项
- Secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
- Insecure:允许客户端从大于1024的tcp/ip端口连接nfs服务器;
- Sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
- aync: 数据先保存在内存缓冲区中,必要时才写入磁盘;
- welay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置)
从上面这个例子中可以看出exports文件的格式,首先是定义要共享的文件目录。必须使用绝对路径,而不能使用符号链接。然后设置对这个目录进行访问限制的参数,用于保证安全性。在第1行设置中,将/usr/sys/src目录共享出去。但限制客户机上的root用户等价于本机上的daemon用户,以避免客户机上的root用户拥有这个服务器上的root权限进行非法操作。此后的host2参数是主机名,从而限制只有host2才能共享这个/usr/sys/src目录;第2行设置共享/usr/ports目录,但限制为只允许读取,并且也只有网络上的192.168.1.0计算机才能访问这个共享目录。
(1)rw:可读写权限。
(2)ro:只读权限。
(3)no_root_squash:当登录NFS主机使用共享目录的使用者是root时,其权限将被转换成为匿名使用者,通常它的UID与GID都会变成nobody身份。
(4)root_squash;如果登录NFS主机使用共享目录的使用者是root,那么对于这个共享的目录来说,它具有root的权限。
(5)all_squash:忽略登录NFS使用者的身份,其身份都会被转换为匿名使用者,通常即nobody。
(6)anonuid:通常为nobody,也可以自行设定这个UID的值,UID必须存在于/etc/passwd中。
(7)anongid:同anonuid,但是变为Group ID。
(8)sync:同步写入资料到内存与硬盘中。
(9)async:资料会先暂存于内存中,而非直接写入硬盘。
主机可以使用以下格式。
(1)单个机器:一个全限定域名(能够被服务器解析)、主机名(能够被服务器解析)或IP地址。
(2)使用通配符来指定的机器系列,使用 * 或 ?字符来指定一个字符串匹配。IP地址中不使用通配符。如果反向DNS查询失败,它们可能会碰巧有用。在完整域名中指定通配符时,点(.)不包括在通配符中。例如,*.example.com包括one.example.com,但不包括one.two.example.com.。
(3)IP网络:使用a.b.c.d/z,a.b.c.d是网络,z是子网掩码中的位数(如192.168.0.0/24)。另一种可以接受的格式是a.b.c.d/netmask,a.b.c.d是网络,netmask是子网掩码(如192.168.70.8/255.255.255.0)。