今天使用 Centos5.5 64位的系統(tǒng)部署一個NFS服務(wù)器之后,使用客戶端進(jìn)行掛載,遇到了權(quán)限不足的問題,以下把我的排錯過程和問題處理過程和各位分享。如果您在配置NFS服務(wù)器的過程中,遇到了同樣的問題,希望這篇blog對您有所幫助。
環(huán)境: NFS服務(wù)器IP:192.168.60.3 使用CentOS 5.5 x64操作系統(tǒng) NFS客戶端IP:192.168.60.4 使用CentOS 5.5 x64操作系統(tǒng)
NFS服務(wù)配置過程 1、查看確認(rèn)一下,當(dāng)前NFS服務(wù)器的NFS服務(wù)和RPC服務(wù)的狀態(tài) [root@NFS ~]# chkconfig --list |grep 3:on (查看目前開機(jī)啟動的服務(wù)) crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@NFS ~]# /etc/init.d/portmap status (查看一下,portmap啟動沒有) [root@NFS ~]# /etc/init.d/nfs status (查看一下,NFS啟動沒有) rpc.mountd is stopped
2、由于兩個服務(wù)都沒有啟動,并且沒有設(shè)置開機(jī)啟動,所以我們進(jìn)行一下配置 [root@NFS ~]# chkconfig nfs on (設(shè)置NFS服務(wù)開機(jī)啟動) crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off portmap 0:off 1:off 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off sysstat 0:off 1:off 2:on 3:on 4:off 5:on 6:off
3、我們重新啟動一下服務(wù)器,確認(rèn)一下上述修改都生效了,服務(wù)器啟動正常。 [root@NFS ~]# shutdown -r now (重啟一下服務(wù)器) [root@NFS ~]# /etc/init.d/portmap status (確認(rèn)一下portmap)
portmap (pid 2316) is running... [root@NFS ~]# /etc/init.d/nfs status rpc.mountd (pid 2434) is running... nfsd (pid 2431 2430 2429 2428 2427 2426 2425 2424) is running... rpc.rquotad (pid 2398) is running... [root@NFS ~]# netstat -lnt (查看一下RPC端口號是否正常)
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:882 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:917 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:7455 0.0.0.0:* LISTEN tcp 0 0 :::65534 :::* LISTEN [root@NFS ~]# rpcinfo -p (查看一下RPC注冊的端口號) program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100011 1 udp 879 rquotad 100011 2 udp 879 rquotad 100011 1 tcp 882 rquotad 100011 2 tcp 882 rquotad 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100021 1 udp 14392 nlockmgr 100021 3 udp 14392 nlockmgr 100021 4 udp 14392 nlockmgr 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100021 1 tcp 7455 nlockmgr 100021 3 tcp 7455 nlockmgr 100021 4 tcp 7455 nlockmgr 100005 1 udp 914 mountd 100005 1 tcp 917 mountd 100005 2 udp 914 mountd 100005 2 tcp 917 mountd 100005 3 udp 914 mountd 100005 3 tcp 917 mountd [root@NFS ~]# mkdir /share (新建一個目錄用于NFS共享)
[root@NFS ~]# cd / (回到根目錄) [root@NFS /]# ll (查看一下) total 166 drwxr-xr-x 2 root root 4096 Mar 23 20:52 bin drwxr-xr-x 4 root root 1024 Mar 23 18:18 boot drwxr-xr-x 12 root root 4220 May 27 19:42 dev drwxr-xr-x 84 root root 4096 May 27 20:15 etc drwxr-xr-x 3 root root 4096 Mar 23 22:26 home drwxr-xr-x 11 root root 4096 Mar 23 20:52 lib drwxr-xr-x 7 root root 12288 Mar 23 20:52 lib64 drwx------ 2 root root 16384 Mar 23 18:14 lost+found drwxr-xr-x 2 root root 4096 Jan 27 2010 media drwxr-xr-x 2 root root 4096 Mar 31 2010 misc drwxr-xr-x 2 root root 4096 Jan 27 2010 mnt drwxr-xr-x 2 root root 4096 Jan 27 2010 opt dr-xr-xr-x 79 root root 0 May 27 19:41 proc drwxr-x--- 2 root root 4096 Mar 23 22:24 root drwxr-xr-x 2 root root 12288 Mar 23 20:52 sbin drwxr-xr-x 2 root root 4096 Mar 23 18:14 selinux drwxr-xr-x 2 root root 4096 May 27 20:16 share drwxr-xr-x 2 root root 4096 Jan 27 2010 srv drwxr-xr-x 11 root root 0 May 27 19:41 sys drwxrwxrwt 3 root root 4096 May 27 19:42 tmp drwxr-xr-x 15 root root 4096 Mar 23 18:16 usr drwxr-xr-x 20 root root 4096 Mar 23 18:17 var [root@NFS /]# chown nfsnobody:nfsnobody share (我們修改一下share的所有者和所屬組)
[root@NFS /]# ll (確認(rèn)一下所有者和所屬組修改好了) total 166 drwxr-xr-x 2 root root 4096 Mar 23 20:52 bin drwxr-xr-x 4 root root 1024 Mar 23 18:18 boot drwxr-xr-x 12 root root 4220 May 27 19:42 dev drwxr-xr-x 84 root root 4096 May 27 20:33 etc drwxr-xr-x 3 root root 4096 Mar 23 22:26 home drwxr-xr-x 11 root root 4096 Mar 23 20:52 lib drwxr-xr-x 7 root root 12288 Mar 23 20:52 lib64 drwx------ 2 root root 16384 Mar 23 18:14 lost+found drwxr-xr-x 2 root root 4096 Jan 27 2010 media drwxr-xr-x 2 root root 4096 Mar 31 2010 misc drwxr-xr-x 2 root root 4096 Jan 27 2010 mnt drwxr-xr-x 2 root root 4096 Jan 27 2010 opt dr-xr-xr-x 77 root root 0 May 27 19:41 proc drwxr-x--- 2 root root 4096 Mar 23 22:24 root drwxr-xr-x 2 root root 12288 Mar 23 20:52 sbin drwxr-xr-x 2 root root 4096 Mar 23 18:14 selinux drwxr-xr-x 2 nfsnobody nfsnobody 4096 May 27 20:16 share drwxr-xr-x 2 root root 4096 Jan 27 2010 srv drwxr-xr-x 11 root root 0 May 27 19:41 sys drwxrwxrwt 3 root root 4096 May 27 19:42 tmp drwxr-xr-x 15 root root 4096 Mar 23 18:16 usr drwxr-xr-x 20 root root 4096 Mar 23 18:17 var 4、我們編譯一下這個NFS的配置文件。
[root@NFS /]# vi /etc/exports
/share 192.168.60.0/24(rw,sync,all_squash,root_squash) (我們允許這個共享對192.168.60.0/24網(wǎng)段可讀可寫,且將所有訪問者包括root的身份都改為nfsnobody) [root@NFS /]# /etc/init.d/nfs restart (重新啟動一下NFS服務(wù))
Shutting down NFS mountd: [ OK ] Shutting down NFS daemon: [ OK ] Shutting down NFS quotas: [ OK ] Shutting down NFS services: [ OK ] Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS daemon: [ OK ] Starting NFS mountd: [ OK ] [root@NFS /]# showmount -e 192.168.60.3 (查看一下掛載生效了)
Export list for 192.168.60.3:
/share 192.168.60.0/24 去客戶端操作我們連接NFS共享到客戶端本地。
[root@session ~]# mkdir /test (新建一個目錄)
[root@session ~]# showmount -e 192.168.60.3 (查看一下NFS服務(wù)器端的共享目錄)
Export list for 192.168.60.3: /share 192.168.60.0/24 [root@session ~]# mount -t nfs 192.168.60.3:/share /test (我們掛載共享到/test)
屏幕卡在這里不動了,檢查發(fā)現(xiàn),因?yàn)镹FS客戶端沒有啟動portmap服務(wù)會造成卡住的現(xiàn)象,我們用下面的方法來解決
[root@session ~]# /etc/init.d/portmap start (啟動RPC服務(wù)) Starting portmap: [ OK ] [root@session ~]# mount -t nfs 192.168.60.3:/share /test (再次掛載就成功了) [root@session ~]# cd /test (進(jìn)入/test這個NFS目錄) [root@session test]# touch 1 (我們新建一個文件,發(fā)現(xiàn)居然沒有權(quán)限)
touch: cannot touch `1': Permission denied 【接下來,我們開始排錯】 我們回到服務(wù)器端操作,為了解決權(quán)限的問題,我們先放777的權(quán)限給NFS目錄測試。
[root@NFS /]# chmod 777 share (修改NFS共享目錄的權(quán)限為777)
[root@NFS /]# ll (確認(rèn)修改成功了) total 166 drwxr-xr-x 2 root root 4096 Mar 23 20:52 bin drwxr-xr-x 4 root root 1024 Mar 23 18:18 boot drwxr-xr-x 12 root root 4220 May 27 19:42 dev drwxr-xr-x 84 root root 4096 May 27 20:33 etc drwxr-xr-x 3 root root 4096 Mar 23 22:26 home drwxr-xr-x 11 root root 4096 Mar 23 20:52 lib drwxr-xr-x 7 root root 12288 Mar 23 20:52 lib64 drwx------ 2 root root 16384 Mar 23 18:14 lost+found drwxr-xr-x 2 root root 4096 Jan 27 2010 media drwxr-xr-x 2 root root 4096 Mar 31 2010 misc drwxr-xr-x 2 root root 4096 Jan 27 2010 mnt drwxr-xr-x 2 root root 4096 Jan 27 2010 opt dr-xr-xr-x 77 root root 0 May 27 19:41 proc drwxr-x--- 2 root root 4096 Mar 23 22:24 root drwxr-xr-x 2 root root 12288 Mar 23 20:52 sbin drwxr-xr-x 2 root root 4096 Mar 23 18:14 selinux drwxrwxrwx 2 nfsnobody nfsnobody 4096 May 27 20:16 share drwxr-xr-x 2 root root 4096 Jan 27 2010 srv drwxr-xr-x 11 root root 0 May 27 19:41 sys drwxrwxrwt 3 root root 4096 May 27 19:42 tmp drwxr-xr-x 15 root root 4096 Mar 23 18:16 usr drwxr-xr-x 20 root root 4096 Mar 23 18:17 var 【接下來我們回到客戶端操作】此時在客戶端,我們發(fā)現(xiàn)已經(jīng)可以正常寫入文件到NFS共享了。
[root@session test]# touch 1 (新建文件成功)
[root@session test]# ll (查看一下,我們發(fā)現(xiàn)文件所有者和所屬組均為65534 不是我們指定的nfsnobody用戶)
total 0 -rw-r--r-- 1 65534 65534 0 May 27 20:42 1 由此我們判斷,剛才沒有權(quán)限寫入,是因?yàn)榭蛻舳瞬皇莕fsnobody的身份。由此我們找到了故障點(diǎn)。
【我們回到服務(wù)器端排錯,解決問題】
[root@NFS /]# cat /etc/passwd (查看一下用戶文件)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
pcap:x:77:77::/var/arpwatch:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:4294967294:4294967294:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
avahi:x:70:70:Avahi daemon:/:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
avahi-autoipd:x:100:104:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin
zhangyang:x:500:500::/home/zhangyang:/bin/bash 我們看到nfsnobody的UID和GID是4294967294,并不是65534。我們通過修改NFS配置文件,指定匿名用戶的UID和GID
[root@NFS /]# vi /etc/exports (在配置文件里面增加指定UID和GID的部分)
/share 192.168.60.0/24(rw,sync,all_squash,root_squash,anonuid=4294967294,anongid=4294967294) [root@NFS /]# /etc/init.d/nfs restart (重啟啟動一下NFS服務(wù),使配置生效)
Shutting down NFS mountd: [ OK ] Shutting down NFS daemon: [ OK ] Shutting down NFS quotas: [ OK ] Shutting down NFS services: [ OK ] Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS daemon: [ OK ] Starting NFS mountd: [ OK ] [root@NFS /]# chmod 755 share (我們將共享文件的權(quán)限改回755)
[root@NFS /]# ll (確認(rèn)修改成功) total 166 drwxr-xr-x 2 root root 4096 Mar 23 20:52 bin drwxr-xr-x 4 root root 1024 Mar 23 18:18 boot drwxr-xr-x 12 root root 4220 May 27 19:42 dev drwxr-xr-x 84 root root 4096 May 27 20:33 etc drwxr-xr-x 3 root root 4096 Mar 23 22:26 home drwxr-xr-x 11 root root 4096 Mar 23 20:52 lib drwxr-xr-x 7 root root 12288 Mar 23 20:52 lib64 drwx------ 2 root root 16384 Mar 23 18:14 lost+found drwxr-xr-x 2 root root 4096 Jan 27 2010 media drwxr-xr-x 2 root root 4096 Mar 31 2010 misc drwxr-xr-x 2 root root 4096 Jan 27 2010 mnt drwxr-xr-x 2 root root 4096 Jan 27 2010 opt dr-xr-xr-x 77 root root 0 May 27 19:41 proc drwxr-x--- 2 root root 4096 Mar 23 22:24 root drwxr-xr-x 2 root root 12288 Mar 23 20:52 sbin drwxr-xr-x 2 root root 4096 Mar 23 18:14 selinux drwxr-xr-x 2 nfsnobody nfsnobody 4096 May 27 20:42 share drwxr-xr-x 2 root root 4096 Jan 27 2010 srv drwxr-xr-x 11 root root 0 May 27 19:41 sys drwxrwxrwt 3 root root 4096 May 27 19:42 tmp drwxr-xr-x 15 root root 4096 Mar 23 18:16 usr drwxr-xr-x 20 root root 4096 Mar 23 18:17 var 【回到客戶端操作】確認(rèn)配置正確,排錯完成。 [root@session test]# touch 2 (新建一個文件2)[root@session test]# touch 3 (新建一個文件3) [root@session test]# ll (查看一下。我們發(fā)現(xiàn)寫入和用戶都正常了) total 0 -rw-r--r-- 1 65534 65534 0 May 27 20:42 1 -rw-r--r-- 1 nfsnobody nfsnobody 0 May 27 2012 2 -rw-r--r-- 1 nfsnobody nfsnobody 0 May 27 2012 3 【總結(jié)】
我們發(fā)現(xiàn)在CentOS 5.5 X64中 cat /etc/passwd之后,nfsnobody用戶的UID和GID均為4294967294。但是NFS服務(wù),默認(rèn)使用65534作為匿名用戶的UID和GID,由此造成權(quán)限問題。該問題在32位centos和最新版的64位Centos中不存在。如果您遇到了和我一樣的問題??梢酝ㄟ^修改配置文件,指定匿名用戶的UID和GID來解決 |
|