nfs mount 失败,NFS mount failed, reason given by server: Permission denied 的解决办法











做嵌入式开发经常要挂载NFS目录,但总是挂载不上,经过好久的折磨,终于发现还要配置  /etc/exports 文件来设置要挂载的NFS目录,否则会出现如下错误.

NFS mount failed, reason given by server: Permission denied 

1. 查看系统有没有nfs功能 

cat /proc/filesystes 

2. ntsysv 命令选中nfs 

service nfs restart,看能否啟动,如不能正常,可以查看相应的出错信息 

tali /var/log/messages 

3. 配置/etc/exports 

eg: /home/mis    *(rw) 

此文件是配置相关的文件和一些权限,上面的设置表示,所有的用户对/home/mis都有读写的权限 


 # /etc/exports: the access control list for filesystems which may be exported
  2 #       to NFS clients.  See exports(5).
  3 #
  4 # Example for NFSv2 and NFSv3:
  5 # /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
  6 #
  7 # Example for NFSv4:
  8 # /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
  9 # /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
 10 #
 11 
 12 
 13 /home/ls/nfs *(rw,sync,no_root_squash)
 14 /mnt *(rw,sync,no_root_squash)
 15 /opt *(rw,sync,no_root_squash)
 16 #slq 此文件是配置相关的文件和一些权限,上面的设置表示,所有的用户对/home/mis都有读写的权限 
 17 /home/slq/nfs *(rw,sync,no_root_squash)
 18 /slq/nfs *(rw,sync,no_root_squash)



4. 执行sudo exportfs -a 表示将所有的更新. 

5. sudo service nfs restart 

这两条命令注意root权限

6. 执行mount命令 

eg: mount 10.0.1.153:/home/mis  /mnt/mis 


mount -t nfs -o nolock 192.168.0.233:/home/ls/nfs /mnt/ls


mount -t nfs -o nolock 192.168.0.233:/home/slq/nfs /mnt/slq


mount -t nfs -o nolock 192.168.0.233:/slq/nfs /mnt/slq


7. 常用的命令 

showmount 

repcinfo 

8. 如果在开机时就加载,可在/etc/fstab中加入 

ip:/home.mis   /mnt/mis nfs intr 






NFS mount failed, reason given by server: Permission denied 的解决办法

我是设置了NAT后哪台服务器出现

mount: 10.*:/home failed, reason given by server: Permission denied


第一种解决办法:

nfs server接到客户端的mount时,会先客户的IP做反解成域名,用域名(注意是用域名而不是IP)去和/etc/exports做比较,如果匹配不成功会失败。

而我在client并没有添加server的域名,所以匹配不到对应的域名,自然就出现mount: 192.168.168.60:/RESTORE failed, reason given by server: Permission denIed的错误了。

后来,在/etc/hosts文件里添加对应的域名:192.168.168.60 tzeai2.zpss.com tzeai2,问题解决

 

nfs配置

 

1. 查看系统有没有nfs功能 

cat /proc/filesystes 

2. ntsysv 命令选中nfs 

service nfs restart,看能否啟动,如不能正常,可以查看相应的出错信息 

tali /var/log/messages 

3. 配置/etc/exports 

eg: /home/mis    *(rw) 

此文件是配置相关的文件和一些权限,上面的设置表示,所有的用户对/home/mis都有读写的权限 

4. 执行exportfs -a 表示将所有的更新. 

5. service nfs restart 

6. 执行mount命令 

eg: mount 10.0.1.153:/home/mis  /mnt/mis 

7. 常用的命令 

showmount 

repcinfo 

8. 如果在开机时就加载,可在/etc/fstab中加入 

ip:/home.mis   /mnt/mis nfs intr 

 

 

第二种:

自己郁闷了好久,为什么做autofs总是不成功,iptables ,selinux ,原来跟他俩都没关系,手动从客户端mount server上的nfs共享 提示mount: failed, reason given by server: Permission denied。网上找答案:去掉/etc/hosts里添加的 ip 主机名的映射,因为增加了IP/主机名对后,NFS会先把IP地址转成对应的主机名,然后用这个主机名去匹配/etc/exports文件,而exports文件是设置的:IP address(rw,sync),当然就没有权限mount。

还有就是如果设置了 /etc/resolve.conf 文件 ,而且 exports文件中也是使用的IP也会出这个问题。

如果 在客户端上手动mount时报错 mount.nfs :permission denied ,那不是server的问题,而是使用的运行mount账户 没有访问客户端挂载点的权限。

在mount nfs目录时出现错误:

mount -t nfs 192.168.1.172:/nfs/mp3/mp3files /web/mp3/mp3files
mount: 192.168.1.172:/nfs/mp3/mp3files failed, reason given by server: Permission denIEd

网络来源:

我原来的/etc/exportfs是这样的:
[root@ha1 nfs]# cat /etc/exports
/nfs/mp3/mp3files 192.168.1.*(rw,async)

一直都用的好好的,其它的机器通过内网IP来mount这台上面的数据。

所以我想应该是我做了什么造成的,因为之前我看到/var/log/messages

mountd[3082]: Fake hostname rs0.xxxxxxcom for 192.168.1.69 - forward lookup doesn’t exist

以为nfs警告说我没有做域名反解,所以我就在我的域名服务器做把192.168.1.69做了一下反解。并增加了rs0.xxxxx.com这个域名到192.168.1.69。做完之后就没有再出现上面的错误了,但是上面说的出现不能mount的情况。

在网上查了一些资料,有人说把/etc/exports换成域名试试,所以我就改成了:
[root@ha1 nfs]# cat /etc/exports
/nfs/mp3/mp3files *.xxxxxx.com(rw,async)

再mount,发现正常,没有问题了。

后来又查了一些相关资料,才知道:

nfs server接到客户端的mount时,会先客户的IP做反解成域名,用域名(注意是用域名而不是IP)去和/etc/exports做比较,如果匹配不成功会失败。

而我做了域名反解后,并没有更新/etc/exports内的IP为域名。所以匹配不到对应的域名,自然就出现mount: 192.168.1.172:/nfs/mp3/mp3files failed, reason given by server: Permission denIEd的错误了。

之前用IP没有问题是因为在域名不能反解的时候还是用IP去匹配的。

除錯參考

當/etc/exports設定的權限,不符合clIEnt端的來源時,則會出現錯誤訊息如下

mount: hostname:/dir failed, reason given by server: Permission den IEd

然而必須注意的是,若在nfs server的/etc/hosts內有設定IP與hostname的對照

則nfs會先把來源IP轉換成hostname,再與/etc/exports內的設定作對照

若此時/etc/exports的設定使用IP而非hostname,則會產生無法匹配的情況

因此而出現,雖然來源IP在/etc/exports已正確設定,卻仍然發生Permission denIEd的怪異現象


解決方案是在/etc/exports內採用hostname,避免使用IP



 

linux中的NFS服务器配置及/etc/exports

分类: Linux   296人阅读  评论(0)  收藏  举报
nfs 文件系统 server linux

原文地址:http://blog.csdn.net/xph23/article/details/6001471


先简单介绍一下NFS服务器是什么? 

  NFS server可以看作是一个FILE SERVER,它可以让你的PC通过网络将远端得NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT看来使用NFS的远端文件就象是在使用本地文件一样。 

  RPC(Remote Procedure Call) 

  NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER.所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。 

  因为我用的是Redhat Linux,所以下面的操作都是在这个系统上的。 

  一:服务器端的设定(以LINUX为例) 

  服务器端的设定其实很简单,只需设定一个文件就行,就是/etc/exports这个文件,设定格式如下: 

  欲分享出去的目录 主机名称1或者IP1(参数1,参数2) 主机名称2或者IP2(参数3,参数4) 

  上面这个格式表示,同一个目录分享给两个不同的主机,但提供给这两台主机的权限和参数是不同的,所以分别设定两个主机得到的权限。 

  Exports文件中可以设定的参数主要有以下这些: 

  参数 说明 

  Ro 该主机对该共享目录有只读权限 

  Rw 该主机对该共享目录有读写权限 

  Root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户 

  No_root_squash 客户机用root访问该共享文件夹时,不映射root用户 

  All_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户 

  Anonuid 将客户机上的用户映射成指定的本地用户ID的用户 

  Anongid 将客户机上的用户映射成属于指定的本地用户组ID 

  Sync 资料同步写入到内存与硬盘中 

  Async 资料会先暂存于内存中,而非直接写入硬盘 

  Insecure 允许从这台机器过来的非授权访问 

  例如可以编辑/etc/exports为: 

  / user01(rw) user02(rw,no_root_squash) 表示共享服务器上的根目录(/)只有user01和user02两台主机可以访问,且有读写权限;user01主机用root用户身份访问时,将客户机的root用户映射成服务器上的匿名用户(root_squash,该参数为缺省参数),相当于在服务器使用nobody用户访问目录;user02主机用root用户身份访问该共享目录时,不映射root用户(no_root_squash),即相当于在服务器上用root身份访问该目录 

  /root/share/ 192.168.1.2(rw,insecure,sync,all_squash) 表示共享服务器上的/root/share/目录只有192.168.1.2主机可以访问,且有读写权限;此主机用任何身份访问时,将客户机的用户都映射成服务器上的匿名用户(all_squash),相当于在服务器上用nobody用户访问该目录(若客户机要在该共享目录上保存文件(即写操作),则服务器上的nobody用户对该目录必须有写的权限) 

  /home/ylw/ *.test.com (rw,insecure,sync,all_squash) 表示共享/home/ylw/目录,*.test.com域中所有的主机都可以访问该目录,且有读写权限 

  /home/share/ .test.com (ro,sync,all_squash,anonuid=zh3,anongid=wa4) 表示共享目录/home/share/,*.test.com域中的所有主机都可以访问,但只有只读的权限,所有用户都映射成服务器上的uid为zh3、gid为wa4的用户 

  设定好后可以使用以下命令启动NFS: 

  service nfs restart 

  exportfs命令: 

  如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs命令来使改动立刻生效,该命令格式如下: 

  exportfs [-aruv] 

  -a :全部mount或者unmount /etc/exports中的内容 

  -r :重新mount /etc/exports中分享出来的目录 

  -u :umount 目录 

  -v 在export的时候,将详细的信息输出到屏幕上 

  具体例子: 

  [root @test root]# exportfs -rv <==全部重新 export 一次! 

  exporting 192.168.1.2:/root/share


你可能感兴趣的:(linux)