自己郁闷了好久,为什么做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 denIEd



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

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

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

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

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