nfs:client mount成功,但是进入目录时出现Permission denied

来源:岁月联盟 编辑:exp 时间:2011-09-15

刚在CentOS上试用了下NFS,具体的步骤如下:
Server端:
①、先确认是否已经安装了相应的服务
[root@localhost /]# rpm -qa |egrep -i "nfs|portmap"   
portmap-4.0-65.2.2.1
nfs-utils-lib-1.0.8-7.6.el5
nfs-utils-1.0.9-50.el5
②、添加共享目录:vi /etc/exports
[root@localhost /]# cat /etc/exports
/home/kavin     *(ro)
注解:
exports文件内容格式:
<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
1.输出目录:
输出目录是指NFS系统中需要共享给客户机使用的目录;
2.客户端:
客户端是指网络中可以访问这个NFS输出目录的计算机
客户端常用的指定方式
指定ip地址的主机 192.168.0.200
指定子网中的所有主机 192.168.0.0/24
指定域名的主机 a.liusuping.com
指定域中的所有主机 *.liusuping.com
所有主机 *
3.选项:
选项用来设置输出目录的访问权限、用户映射等。NFS主要有3类选项:
访问权限选项
设置输出目录只读 ro
设置输出目录读写 rw
用户映射选项
all_squash 将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash 与all_squash取反(默认设置);
root_squash 将root用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash 与rootsquash取反;
anonuid=xxx 将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx 将远程访问的所有用户组都映射为匿名用 户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
其它选项
secure 限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure 允许客户端从大于1024的tcp/ip端口连接服务器;
sync 将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async 将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay 检查是否有相关的写操作,如果有则将这些写操作 一起执行,这样可以提高效率(默认设置);
no_wdelay 若有写操作则立即执行,应与sync配合使用;
subtree 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
具体可参考:http://www.liusuping.com/ubuntu-linux/Redhat-Linux-NFS-setting.html
③、查看共享目录
[root@localhost /]# exportfs 
/home/kavin     <world>  -- 允许所有的话这里是显示<word>,如果有指定域名或IP 时'将显示指定的域名或IP.
client端:
[root@localhost /]# mount -t nfs 192.168.1.57:/home/kavin /kavin/
[root@localhost /]# cd /kavin/
-bash: cd: /kavin/: Permission denied
从上面看NFS的mount是成功的,但是却无法进入mount,后来通过google一直没找到解决的方法。然后突然发现加载过来的目录的权限不对,具体如下:
[root@localhost /]# ll  ---client机器 
total 152 
drwxr-xr-x   2 root root  4096 Sep 15 02:34 bin 
drwx------   4  500  500  4096 Sep 13 15:20 kavin 
drwxr-xr-x  13 root root  4096 Sep 15 02:34 lib 
然后通过在client更改/kavin权限,发现无法更改;
[root@localhost /]# chmod 777 /kavin/
chmod: changing permissions of `/kavin/': Read-only file system
后来想想这个应该是需要更改server端的权限,
[root@localhost home]# ll  ---server端 
total 32 
drwx------ 4 kavin   kavin   4096 Sep 13 15:20 kavin 
[root@localhost home]# chmod 777 kavin/ 
然后client尝试进入目录,还是不行;重新mount之后就ok了。
[root@localhost /]# cd /kavin/     --- client端 
-bash: cd: /kavin/: Permission denied 
[root@localhost /]# umount /kavin/ 
[root@localhost /]# mount -t nfs 192.168.1.57:/home/kavin /kavin/    
[root@localhost /]# cd /kavin/ 
从上面可以看出,在使用NFS时,server端的目录共享也得注意权限的设置问题。


作者“飞扬”