NFS部署应用实例

   NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样
   NFS的优点:
      1. 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
      2. 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
      3. 一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。

   下面开始NFS的安装:

一、安装准备

 
关闭iptables

service iptables stop

chkconfig iptables off

设置selinux

sed -i's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

二、NFS服务端的安装

1.安装nfs服务
[root@allentuns~]# yum -y install  nfs-utils rpcbind
2.启动nfs服务
[root@allentuns~]# /etc/init.d/rpcbind start
Starting
rpcbind:                                         
[  OK  ]
[root@allentuns~]# /etc/init.d/nfs start
Starting
NFS
services:                                    
[  OK  ]
Starting
NFS
mountd:                                      
[  OK  ]
Starting
NFS
daemon:                                      
[  OK  ]
Starting
RPC
idmapd:                                      
[  OK  ]
3.创建共享目录
[root@allentuns~]# mkdir -pv /web/htdocs
mkdir:
created directory `/web'
mkdir:
created directory `/web/htdocs'
[root@allentuns~]# ll -d /web/htdocs/
drwxr-xr-x.
2 root root 4096 May  3 18:50 /web/htdocs/
4.添加共享目录其它用户有写权限
[root@allentuns~]# chmod o+w /web/htdocs
[root@allentuns~]# ll -d /web/htdocs/
drwxr-xrwx.
2 root root 4096 May  3 18:50 /web/htdocs/
5.修改配置文件,设置共享目录或者分区
[root@allentuns~]# vim /etc/exports
#增加一行
/web/htdocs 192.168.1.5(rw)
6.重读exports文件,使立刻生效
[root@allentuns~]# exportfs -r
7.查看服务器共享的文件。前提需要域名解析,否则报错
[root@allentuns~]# uname -n
allentuns
[root@allentuns~]# echo "127.0.0.1 allentuns" >> /etc/hosts
[root@allentuns~]# showmount -e
Export
list for allentuns:
/web/htdocs 192.168.1.5

三、NFS客户端的安装

  1.安装showmount
  [root@allentuns ~]# yum -y install showmount
2.查看服务器共享
[root@allentuns ~]# showmount -e 192.168.1.4
Export
list for 192.168.1.4:
/web/htdocs 192.168.1.5
3.客户端挂载到本地
[root@allentuns ~]# ll /mnt/
total
0
[root@allentuns ~]# mount -t nfs 192.168.1.4:/web/htdocs /mnt/

四、验证NFS是否成功

服务器端----->>客户端
1.服务器端
[root@allentuns~]# ifconfig |grep "Bcast"
inetaddr:192.168.1.4  Bcast:192.168.1.255  Mask:255.255.255.0
[root@allentuns~]# cd /web/htdocs/
[root@allentunshtdocs]# ls
[root@allentunshtdocs]# cat /etc/issue >>  index.html
[root@allentunshtdocs]# ll
total4
-rw-r--r--. 1 rootroot 47 May  3 19:06 index.html
2.查看是否同步到客户端
[root@allentuns~]# ifconfig |grep "Bcast"
inet
addr:192.168.1.5  Bcast:192.168.1.255  Mask:255.255.255.0
[root@allentuns~]# cd /mnt/
[root@allentuns mnt]# ll
total
4
-rw-r--r--.
1 root root 47 May  3 19:06 index.html
客户端----->>服务器端
1.客户端创建文件
[root@allentuns mnt]# ifconfig |grep "Bcast"
inet
addr:192.168.1.5  Bcast:192.168.1.255  Mask:255.255.255.0
[root@allentuns mnt]# touch test.php
[root@allentuns mnt]# ll
total
4
-rw-r--r--.
1 root      root      47
May  3 19:06 index.html
-rw-r--r--.
1 nfsnobody nfsnobody  0 May  3 19:10 test.php
2.服务器端看是否已经同步
[root@allentuns htdocs]# ifconfig |grep "Bcast"
inet
addr:192.168.1.4  Bcast:192.168.1.255  Mask:255.255.255.0
[root@allentuns htdocs]# ll
total
4
-rw-r--r--.
1 root      root      47
May  3 19:06 index.html
-rw-r--r--.
1 nfsnobody nfsnobody  0 May  3 19:10 test.php
以上两点证明:nfs服务器端到客户端是双向同步的!!!

五、深入应用NFS

以下实验大家用主机名来区分服务器端和客户端,
服务器端为NFS_Server ip-192.168.1.4
客户端为  NFS_Client ip-192.168.1.5


    

实例一:
将/tmp分享给大家使用,让所有的人都可以存取,让root写入档案还是具有root的权限
[NFS
Server]
[root@NFS_Server~]# ll -d /tmp/  #目录tmp文件系统本身具有读写权限
drwxrwxrwt.
3 root root 4096 May  3 21:39 /tmp/
[root@NFS_Server~]# vim /etc/exports
/tmp 192.168.1.5(rw,root_squash)
[root@NFS_Server~]# exportfs -r #重新载入配置文件
[root@NFS_Server~]# ll /tmp
total
0
-rw-------.
1 root      root      0 Apr
23 15:05 yum.log
[NFS Client]
[root@NFS_Client~]# mkdir /share1 #创建挂载目录
[root@NFS_Client~]# ll /share1/
total
0
[root@NFS_Client~]# mount -t nfs 192.168.1.4:/tmp/ /share1/  #挂载
[root@NFS_Client share1]# ll #已同步到客户端的/share1目录
total
0
-rw-------.
1 root root 0 Apr 23 15:05 yum.log
[root@NFS_Client share1]# whoami #查看当前用户
root
[root@NFS_Client share1]# touch a.sh  #以root用户创建一个测试文件
[root@NFS_Client share1]# ll #查看a.sh的宿主宿组都是root
total
0
-rw-r--r--.
1 root root 0 May  3  2014 a.sh
-rw-------.
1 root root 0 Apr 23 15:05 yum.log
[NFS Server]
[root@NFS_Server tmp]# ll  #查看a.sh是否同步,查看a.sh的宿主宿组是否是root
total
0
-rw-r--r--.
1 root root 0 May  3 22:15 a.sh
-rw-------.
1 root root 0 Apr 23 15:05 yum.log
---End---
实验一总结:主要的就是共享权限no_root_squash
要想明白no_root_squash就要先明白root_squash的意思
root_squash:如果客户端是以root身份进行对nfs分区操作,那么会被root_squash压缩成nfsnobody。
no_root_squash:与root_squash意思相反,就是不压缩,仍然是以root用户进行进行操作nfs分区,安全性没有保证
例题二、
同一目录针对不同范围开放不同的权限
我们将一个公共的目录/www/onair 公开出去,但是我们只限定我的局域网络192.168.1.0/24这个网且加入Allentunsgroup的用户才能够读写,其它来源则只能读取
[ON Server]
[root@NFS_Server ~]# mkdir /www/onair -pv
mkdir:
created directory `/www'
mkdir:
created directory `/www/onair'
[root@NFS_Server~]# touch /www/onair/a.sh
[root@NFS_Server~]# groupadd -g 500 Allentunsgroup
[root@NFS_Server~]# useradd -g Allentunsgroup -r 500 Allentuns
[root@NFS_Server~]# setfacl -m g:Allentunsgroup:rwx /www/onair  #设置Allentunsgroup组对/www/onair文件的读写执行权限
[root@NFS_Server~]# ll -d /www/onair/
drwxrwxr-x+
2 root root 4096 May  4 01:45 /www/onair/
[root@NFS_Server~]# cat /etc/group |grep Allentunsgroup #查看对应的gid后面会用到
Allentunsgroup:x:500:
[root@NFS_Server~]# vim /etc/exports
/www/onair         192.168.1.0/24(rw) 
*(ro)
[root@NFS_Server~]# exportfs -r

[ON Client]
[root@NFS_Client~]# mkdir /usr/local/onair
[root@NFS_Client~]# showmount -e 192.168.1.4
Export
list for 192.168.1.4:
/www/onair (everyone)
[root@NFS_Client~]# mount -t nfs 192.168.1.4:/www/onair /usr/local/onair/
[root@NFS_Client~]# cd /usr/local/onair/
[root@NFS_Client
onair]# ll
total
0
-rw-r--r--.
1 root root 0 May  4 01:45 a.sh
[root@NFS_Client onair]# whoami
root
[root@NFS_Clien onair]# touch b.sh #拒绝
touch:
cannot touch `b.sh': Permission denied
root用户拒绝写入
然后创建一个新账号,并加入到Allentunsgroup组中测试是否有写入权限
[root@NFS_Client~]# groupadd -g 500 Allentunsgroup
[root@NFS_Client~]# cat /etc/group |grep Allentunsgroup
Allentunsgroup:x:500:
[root@NFS_Client~]# useradd -g Allentunsgroup scott
[root@NFS_Client~]# id scott
uid=500(scott)
gid=500(Allentunsgroup) groups=500(Allentunsgroup)
[root@NFS_Client~]# passwd scott
Changing
password for user scott.
New
password:
BAD
PASSWORD: it is too short
BAD
PASSWORD: is too simple
Retype
new password:
passwd:
all authentication tokens updated successfully.
[root@NFS_Client onair]# su scott
[scott@NFS_Client onair]$ whoami
scott
[scott@NFS_Client onair]$ ll
total
0
-rw-r--r--.
1 root root 0 May  4 01:45 a.sh
[scott@NFS_Client onair]$ touch b.sh #写入成功
[scott@NFS_Client onair]$ ll
total
0
-rw-r--r--.
1 root  
root           0 May  4
01:45 a.sh
-rw-r--r--.
1 nobody Allentunsgroup 0 May  4  2014 b.sh

[ON Server]
[root@NFS_Server ~]# ll /www/onair/
total
0
-rw-r--r--.
1 root     
root           0 May  4
01:45 a.sh
-rw-r--r--.
1 Allentuns Allentunsgroup 0 May  4 02:11 b.sh
已经同步到Server端,并且同步到server端的用户是Allentuns,用户组为Allentunsgroup
setfacl的用法
setfacl命令可以用来细分linux下的文件权限。
chmod命令可以把文件权限分为u,g,o三个组,
而setfacl可以对每一个文件或目录设置更精确的文件权限。
比较常用的用法如下:
setfacl
�Cm u:apache:rwx  file 设置apache用户对file文件的rwx权限
setfacl
�Cm g:market:rwx  file  设置market用户组对file文件的rwx权限
setfacl
�Cx g:market file   删除market组对file文件的所有权限
getfacl  file  查看file文件的权限
Error1
[root@NFS_Server onair]# service rpcbind stop
shell-init:
error retrieving current directory: getcwd: cannot access parent directories:
No such file or directory
chdir:
error retrieving current directory: getcwd: cannot access parent directories:
No such file or directory
Stopping
rpcbind:
解决办法
退出当前目录,重新执行此命令
---End---


你可能感兴趣的:(linux,部署,nfs)