Linux NFS服务器搭建与错误提示的解决方法

发布时间:2020-05-21编辑:脚本学堂
本文介绍下,在linux中搭建nfs服务器的过程,以及遇到的错误问题的解决方法,有需要的朋友,参考下吧。

1,服务端设置:
 

复制代码 代码示例:

[root@server ~]# cat /etc/redhat-release   查看操作系统版本信息
centos release 5.5 (Final)
[root@server ~]# uname -r     查看当前系统内核版本号
2.6.18-194.el5
[root@server ~]# uname -a
linux server 2.6.18-194.el5 #1SMP Fri Apr 2 14:58:35 EDT 2010 i686 i686 i386 GNU/Linux
[root@server ~]# rpm -aqnfs-utils portmap
nfs-utils-1.0.9-44.el5
portmap-4.0-65.2.2.1
[root@server ~]# rpm -aq |egrep "nfs|portmap"    查看软件包
nfs-utils-lib-1.0.8-7.6.el5
nfs-utils-1.0.9-44.el5
portmap-4.0-65.2.2.1

[root@server ~]#/etc/init.d/portmap start        启动portmap服务
Starting portmap: [  OK  ]
[root@server ~]# netstat -lnt|grep 111    查看端口,确认portmap服务启动
tcp        0     0 0.0.0.0:111                0.0.0.0:*                   LISTEN   
[root@server ~]#/etc/init.d/nfs start      启动 nfs服务
Starting NFS services:  [ OK  ]
Starting NFS quotas: [  OK  ]
Starting NFS daemon: [  OK  ]
Starting NFS mountd: [  OK  ]
[root@server ~]#/etc/init.d/nfs status 
rpc.mountd (pid 12083) isrunning...
nfsd (pid 12080 12079 1207812077 12076 12075 12074 12073) is running...
rpc.rquotad (pid 12068) isrunning...
[root@server ~]# ps -ef |grep rpc     
root      2603    7  0 May13 ?        00:00:00 [rpciod/0]
root      2609    1  0 May13 ?        00:00:00 rpc.statd
root      2641    1  0 May13 ?        00:00:00 rpc.idmapd
rpc      12042    1  0 01:00 ?        00:00:00 portmap
root     12068    1  0 01:01 ?        00:00:00 rpc.rquotad
root     12083    1  0 01:01 ?        00:00:00 rpc.mountd
root     12120 11924  0 01:02 pts/0    00:00:00 grep rpc

[root@server /]# mkdir /data   创建共享目录
[root@server /]# cd /data
[root@server data]#touch yubing.txt
[root@server data]# ll
total 4
-rw-r--r-- 1 root root 0 May 1401:11 yubing.txt
[root@server data]# echo"my name is yubing">yubing.txt
[root@server data]# catyubing.txt
my name is yubing

[root@server ~]# vi /etc/exports   
/data 10.0.0.0/24(rw,sync)
格式为:
共享目录+指定共享IP地址或地址段(rw,sync)

[root@server ~]#/etc/init.d/nfs reload     重新加载

[root@server ~]#cat /var/lib/nfs/etab
/data 10.0.0.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)

[root@server ~]# showmount -e 127.0.0.1 
Export list for 127.0.0.1:
/data1 10.0.0.0/24
 

2,客户端设置:
 

复制代码 代码示例:

[root@client ~]#/etc/init.d/portmap start
启动 portmap:[确定]

[root@client ~]# mkdir /yubing
[root@client ~]# cd /yubing
[root@client yubing]# ll
总计 0

[root@client ~]# mount -t nfs10.0.0.152:/data /yubing    挂载共享目录
[root@client ~]# cd /yubing
[root@client yubing]# ll
总计 4
-rw-r--r-- 1 root root 0 05-1401:11 yubing.txt

3,共享目录权限设置:
 

复制代码 代码示例:
[root@client yubing]# ll
总计 8
-rw-r--r-- 1 root root 18 05-1401:21 yubing.txt
[root@client yubing]# cat yubing.txt         
my name is yubing                       
[root@client yubing]# echo"aaaaa">yubing.txt
-bash: yubing.txt: 权限不够
[root@client yubing]# touch yubing1.txt        无法新建文件
touch: 无法触碰“yubing1.txt”: 权限不够
[root@client yubing]# ls -ld/yubing
drwxr-xr-x 2 root root 409605-14 01:11 /yubing
[root@client yubing]# rm yubing.txt
rm:是否删除有写保护的一般文件“yubing.txt”? y     无法删除
rm: 无法删除“yubing.txt”: 权限不够

4,来到服务端进行权限更改:
 

复制代码 代码示例:
[root@server data]# chown nfsnobody.nfsnobody /data
[root@server data]# ls -ld/data
drwxr-xr-x 2 nfsnobody nfsnobody 4096 May 14 01:11 /data

5,回到客户端查看权限:
 

复制代码 代码示例:
[root@client yubing]# ls -ld/yubing
drwxr-xr-x 2 nfsnobody nfsnobody 4096 05-14 01:11 /yubing
[root@client yubing]# ll
总计 8
-rw-r--r-- 1 root root 18 05-1401:21 yubing.txt
[root@client yubing]# touchyubing1.txt       新建成功
[root@client yubing]# ll
总计 12
-rw-r--r-- 1 nfsnobody nfsnobody  0 05-14 01:29 yubing1.txt
-rw-r--r-- 1 root      root     18 05-14 01:21 yubing.txt
[root@client yubing]# echo"aaaaa">yubing.txt      此文件用户为root,无写入权限
-bash: yubing.txt: 权限不够
[root@client yubing]# echo"aaaaa">yubing1.txt
[root@client yubing]# cat yubing1.txt
aaaaa
[root@client yubing]# rm yubing.txt
rm:是否删除有写保护的一般文件“yubing.txt”? y
[root@client yubing]# ll
总计 8
-rw-r--r-- 1 nfsnobody nfsnobody 6 05-14 01:30 yubing1.txt
[root@client yubing]#

问题:
1,为什么chown nfsnobody.nfsnobody /data后客户端就有权限了呢?
在服务端,可以看到:
 

[root@server ~]# cat /etc/exports
/data 10.0.0.0/24(rw,sync)
[root@server ~]# cat /var/lib/nfs/etab
/data  10.0.0.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)
[root@server ~]# grep nfsnobody /etc/passwd
nfsnobody:x:65534:65534:AnonymousNFS User:/var/lib/nfs:/sbin/nologin
 

(1)rw:可读写权限。
(2)ro:只读权限。
(3)sync:同步写入资料到内存与硬盘中。
(4)async:资料会先暂存于内存中,而非直接写入硬盘。
(5)no_root_squash:当登录NFS主机使用共享目录的使用者是root时,其权限将被转换成为匿名使
    用者,通常它的UID与GID都会变成nobody身份。
(6)root_squash;如果登录NFS主机使用共享目录的使用者是root,那么对于这个共享的目录来说,
    它具有root的权限。
(7)all_squash:忽略登录NFS使用者的身份,其身份都会被转换为匿名使用者,通常即nobody。
(8)anonuid:通常为nobody,也可以自行设定这个UID的值,UID必须存在于/etc/passwd中。
(9)anongid:同anonuid,但是变为Group ID。