NFS文件无法写入的权限问题

http://www.blogjava.net/gf7/archive/2012/12/12/392843.html


环境:

OS:Red Hat Linux As 5


1.服务器上创建共享目录
mkdir 
doc_share


2.编辑exports文件
vim /etc/exports
写入
/doc_share 
192.168.2.131/255.255.255.0(rw,sync)
格式是:
要共享的目录 
共享的IP及掩码或者域名(权限,同步更新)


3.启动服务
/etc/init.d/portmap restart
/etc/init.d/nfs restart
chkconfig nfs 
on
chkconfig portmap on

然后关闭防火墙以及更改Selinux关于NIS的选项
/etc/init.d/iptables stop (防护墙服务关闭)
chkconfig iptables off
system-config-selinux (设置selinux)


查看共享的东西
[root@rac1 
/]# exportfs -rv
exporting 192.168.2.131/255.255.255.0:/doc_share


试着在本机看能否加载
mount 
192.168.2.131:/doc_share /mnt

[root@rac1 doc_share]# echo 
aa>aa.txt
[root@rac1 doc_share]# ls
aa.txt
[root@rac1 /]# cd 
/mnt
[root@rac1 mnt]# ls
aa.txt


4.客户端
手工mount:
mount -o nolock 192.168.2.131:/doc_share 
/mnt
这个时候可以看到在节点1上内容了.
[root@rac2 
mnt]# cd /mnt
[root@rac2 mnt]# ls
aa.txt

自动mount:
编辑fstab文件,实现开机自动挂载
mount -t nfs IP:/目录 挂载到的目录 
(此为临时挂载)
如:
mount -t nfs 
192.168.0.9:/doce /doc
vim /etc/fstab 添加如下内容
192.168.2.131:/doc_share /mnt             nfs     
defaults        0 0



相关的一些命令:
showmout命令对于NFS的操作和查错有很大的帮助.
showmout 

-a:这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器.
-e:显示指定的NFS 
SERVER上export出来的目录.
例如: 
showmount -e 192.168.0.30 

Export list for localhost: 
/tmp * 
/home/linux *.linux.org 

/home/public (everyone) 
/home/test 192.168.0.100


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.0.100:/home/test 
exporting 192.168.0.*:/home/public 
exporting 
*.the9.com:/home/linux 
exporting *:/home/public 
exporting *:/tmp 

reexporting 192.168.0.100:/home/test to kernel

exportfs -au 
<==全部都卸载了
-------------------------------------------------------------------------------
今天在机器上配置NFS文件系统,在/etc/exports中加入以下信息:
    /testfs 10.0.0.0/8(rw)
    重启NFS服务以后,在客户机通过mount -o rw -t nfs 10.214.54.29:/testfs /rd1命令将网络文件mount到本地。执行完成之后,目录是可以访问了,但无法写入。感觉有点奇怪,明明在命令中指定可以写入了。于是到网上搜索资料,发现exports目录权限中,有这么一个参数no_root_squash。其作用是:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有                      root 的权限!。默认情况使用的是相反参数                     root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的                      UID 与 GID 都会变成 nobody 那个身份。
    因为我的客户端是使用root登录的,自然权限被压缩为nobody了,难怪无法写入。将配置信息改为:
    /testfs 10.0.0.0/8(rw,no_root_squash)
    据说有点不安全,但问题是解决了。 
    另外,在测试NFS文件系统时,会经常mount和umount文件,但有时会出现device is busy的错误提示。你肯定感到很奇怪,我明明没有使用啊,看看你当前所在的目录,是不是在mount的文件目录中?回退到上层目录重新umount,是不是OK了?

你可能感兴趣的:(java,linux)