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

刚在CentOS上试用了下NFS,具体的步骤如下:

Server端:

①、先确认是否已经安装了相应的服务

  1. [root@localhost /]# rpm -qa |egrep -i "nfs|portmap"    
  2. portmap-4.0-65.2.2.1 
  3. nfs-utils-lib-1.0.8-7.6.el5 
  4. nfs-utils-1.0.9-50.el5 

②、添加共享目录:vi /etc/exports

  1. [root@localhost /]# cat /etc/exports 
  2. /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

③、查看共享目录

  1. [root@localhost /]# exportfs  
  2. /home/kavin     <world>  -- 允许所有的话这里是显示<word>,如果有指定域名或IP 时'将显示指定的域名或IP. 

client端:

  1. [root@localhost /]# mount -t nfs 192.168.1.57:/home/kavin /kavin/ 
  2. [root@localhost /]# cd /kavin/ 
  3. -bash: cd: /kavin/: Permission denied 

从上面看NFS的mount是成功的,但是却无法进入mount,后来通过google一直没找到解决的方法。然后突然发现加载过来的目录的权限不对,具体如下:

  1. [root@localhost /]# ll  ---client机器  
  2. total 152  
  3. drwxr-xr-x   2 root root  4096 Sep 15 02:34 bin  
  4. drwx------   4  500  500  4096 Sep 13 15:20 kavin  
  5. drwxr-xr-x  13 root root  4096 Sep 15 02:34 lib  

然后通过在client更改/kavin权限,发现无法更改;

  1. [root@localhost /]# chmod 777 /kavin/ 
  2. chmod: changing permissions of `/kavin/': Read-only file system 

后来想想这个应该是需要更改server端的权限,

  1. [root@localhost home]# ll  ---server端  
  2. total 32  
  3. drwx------ 4 kavin   kavin   4096 Sep 13 15:20 kavin  
  4. [root@localhost home]# chmod 777 kavin/  

然后client尝试进入目录,还是不行;重新mount之后就ok了。

  1. [root@localhost /]# cd /kavin/     --- client端  
  2. -bash: cd: /kavin/: Permission denied  
  3. [root@localhost /]# umount /kavin/  
  4. [root@localhost /]# mount -t nfs 192.168.1.57:/home/kavin /kavin/     
  5. [root@localhost /]# cd /kavin/  

从上面可以看出,在使用NFS时,server端的目录共享也得注意权限的设置问题。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章