赞
踩
所有service nfs start/stop/status.....都不能运行,包括service portmap start/stop/status.....都不能运行, this greatly distress me.
sollution:
ps aux |grep nfs
kill -9 2001 2002 2003
setup , and then unticking the nfs services (nfsd, netfile, portmap..)
# The above step is to prevent nfs start when os begin to run .
reboot:
service portmap start
service nfs start
在NFS server的 /etc/exports文件里做如下改动 fsid = 0:
/sdc *(rw,insecure,sync,insecure_locks,no_root_squash)
/panfs *(fsid=0,rw,insecure,sync,insecure_locks,no_root_squash)
client挂载上主机的一个目录以后,它对这个目录拥有上面样子的权限呢?这和client端的用户,服务器端的用户,以及文件/etc/exports里面的内容都是相关的,他们综合作用的结果得到client端的目录使用权限,下面以例子的形式来讲解这个问题。
假设/etc/exports里面的内容为
/tmp *(rw,no_root_squash)
/home/public 192.168.0.*(rw) *(ro)
/home/test 192.168.0.100(rw)
/home/linux *.linux.org(rw,all_squash,anonuid=40,anongid=40)
假设我们在192.168.0.100这个client端登陆此NFS Server主机(192.168.0.2),那么
情况一:在192.168.0.100的帐号为test这个身份,同时NFS Server主机上也有test这个帐号时:
1. 由于NFS主机的/tmp权限为-rwxrwxrwt,所以我(test在192.168.0.100上)在/tmp下面具有存取的权限,并且写入文件的所有人为test。
2. 在/home/public中,由于我有读写的权限,如果NFS主机在/home/public这个目录的权限对于test开放写入的话,那么就可以读写,并且写入档案的所有人是test。如果NFS主机的/home/public对test这个使用者并没有开放写入权限时,那就无法写入,虽然 /etc/exports里面是rw,也不起作用。
3. 在/home/test中,权限与/home/public有相同的状态,需要NFS主机的/home/test对于test有开放的权限。
4. 在/home/linux当中,不论是何种的user,身份都会被变成UID=40的这个帐号。
综上所述,客户端以某个用户A使用nfs server共享的目录以后,如果服务器端刚好也有这个用户A。
如果客户端用户A(普通用户)想访问的那个目录,在nfs server端刚好开放了对server端这个用户A的相应的权限,那么客户端用户A所创建的文件的所有者就是服务器端的A了。
当然这是没有其他参数的限制的情况下,在其他参数的限制条件下,如all_squash,root_squash等,则文件的创建的所有者要进行相应的改变。
情况二:如果我们在192.168.0.100的身份为test2,但是NFS主机却没有test2这个帐号时:
1. 在/tmp下还是可以写入,但是写入的档案所有人变成nobody。
2. 在/home/public与/home/test里面是否可以写入,还需要看/home/public的权限而定,不过身份就被变成nobody了。
3. /home/linux下的身份还是变成UID=40的帐号.
综上所述,客户端以某个用户A使用nfs server共享的目录以后,如果服务器端刚好没有这个用户A。
如果客户端用户A(普通用户)想访问的那个目录,在nfs server端这个目录的开启了相应的权限位,那么这个用户A的就有了相应的权限,他所创建的文件的所有者会变成nobody。如果服务器端没有开启相应的权限位,那么客户端用户A对这个目录就没有了相应的权限。
当然这是没有其他参数的限制的情况下,在其他参数的限制条件下,如all_squash,root_squash等,则文件的创建的所有者要进行相应的改变。
情况三:在192.168.0.100的身份为root:
1. 在/tmp里面可以写入,但是由于no_root_squash的参数,改变了预设的root_squash的设定值,所以在/tmp写入档案的所有人为root了。
2. 在/home/public底下的身份被压缩成了nobody,因为预设的属性都具有root_squash,所以档案所有人就变成了nobody。
3. /home/test情况与/home/public相同。
4. /home/linux中,root的身份也被压缩成UID=40的那个使用者了。
八、文件系统覆盖问题
ll /home/zhangsan/mntTest
total 20
-rw-r--r-- 1 root root 7 May 11 20:57 1
-rw-r--r-- 1 root root 8 May 11 20:57 2
-rw-r--r-- 1 root root 8 May 11 20:57 3
-rw-r--r-- 1 root root 8 May 11 20:57 4
-rw-r--r-- 1 root root 8 May 11 20:57 5
mount ***.***.**:/disk2/**/**/mntTest/ /home/zhangsan/mntTest/
ll /home/zhangsan/mntTest
total 16
-rw-r--r-- 1 root root 6 May 11 20:39 4
-rw-r--r-- 1 root root 6 May 11 20:40 5
-rw-r--r-- 1 root root 6 May 11 20:40 6
-rw-r--r-- 1 root root 6 May 11 20:40 7
这样做完后,把原来的目录完全替换了(临时的),先在的4、5也不是原来的4、5了
九、Mount命令的一些Tips
详见:http://blog.chinaunix.net/u1/34500/showart_2359152.html
*将文件系统中的一部分绑定挂载:
mount --bind olddir newdir
这里,olddir是一个已经挂载的挂载点中的某个子目录。这样操作之后,对于这个olddir,可以从挂载点的olddir进行访问,也可以从newdir进行访问,如果卸载了olddir的挂载点,newdir仍旧可以访问原来olddir的内容,想要恢复newdir原来的内容,那么就umount newdir.
*将文件系统中的某个单个文件帮定挂载:
mount --bind oldfile newfile
这里,oldfile是一个已经挂载的挂载点中的某个文件。这样操作之后,对于这个oldfile,可以从挂载点的oldfile进行访问,也可以从newfile进行访问,如果卸载了oldfile的挂载点,newfile仍旧可以访问原来oldfile的内容,想要恢复newfile原来的内容,那么就umount newfile.
*将挂载点位置移动:
mount --move olddir newdir
这里,原来的挂载点是olddir,我想要把挂载点更换到newdir的话,就用这个命令,这样旧有的挂载点就没有了。另外我实践插入sd卡的时候,一般linux会自动在/media/下创建一个disk目录,然后挂载上去,当卸载的时候会自动删除这个目录;但是如果使用move的话这个目录会遗留下来。
*挂载临时文件系统:
mount -t tmpfs tmpfs tmpfsTest/
这里,tmpfs是一个在内存中开辟空间的一种文件系统。这里的第2个tmpfs处实际可以是任意字符串。例如:"mount -t tmpfs tmphahaha tmpfsTest/"之后,我用mount |grep Test,会输出:
tmphahaha on /home/quietheart/test/tmpfsTest type tmpfs (rw)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。