奇怪NFS问题的幕后黑手─SELinux

前一阵子偶机器的NFS突然出了问题,连在本机上都无法挂载,其中本机IP为192.168.1.60

错误如下:
[root@Lrj-FC ppc]# mount -t nfs 192.168.1.60:/home/lrj/ppc/fs/nfs-root /home/lrj/ppc/mnt/
mount: 192.168.1.60:/home/lrj/ppc/fs/nfs-root failed, reason given by server: 权限 不够

报错相关的log文件内容:
/var/log/messages:
Apr 12 16:50:32 Lrj-FC iiimd[2342]: status has not been enabled yet. (1, 3)
Apr 12 16:50:50 Lrj-FC rpc.mountd: authenticated mount request from Lrj-FCnet:826 for /home/lrj/ppc/fs/nfs-root (/home/lrj/ppc/fs/nfs-root)
Apr 12 16:50:50 Lrj-FC rpc.mountd: can't stat exported dir /home/lrj/ppc/fs/nfs-root: Permission denied

-------------------------------------------------------------------------------
下面是我的NFS相关设置:
/etc/exports:
/home/lrj/ppc/fs/nfs-root      192.168.1.60(rw,no_root_squash)
/home/lrj/ppc/fs/nfs-root      192.168.1.62(rw,no_root_squash)

/etc/hosts:
192.168.1.62    PPC405EP        ppc
127.0.0.1       Lrj-FC  localhost.localdomain   localhost
192.168.1.60    Lrj-FCnet       localnet

/etc/hosts.allow:
portmap:        192.168.1.60/255.255.255.0
portmap:        192.168.1.62/255.255.255.0
lockd: ALL
mountd: ALL
rquatad: ALL
statd: ALL

/etc/hosts.deny: 空

---------------------------------------------------------------------
相关服务的情况:
[lrj@Lrj-FC ppc]$ showmount -e
Export list for Lrj-FC:
/home/lrj/ppc/fs/nfs-root Lrj-FC,PPC405EP,Lrj-FCnet

[lrj@Lrj-FC ppc]$ rpcinfo -p
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  32770  status
    100024    1   tcp  32769  status
    100011    1   udp    776  rquotad
    100011    2   udp    776  rquotad
    100011    1   tcp    779  rquotad
    100011    2   tcp    779  rquotad
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100021    1   udp  32771  nlockmgr
    100021    3   udp  32771  nlockmgr
    100021    4   udp  32771  nlockmgr
    100021    1   tcp  32770  nlockmgr
    100021    3   tcp  32770  nlockmgr
    100021    4   tcp  32770  nlockmgr
    100005    1   udp    789  mountd
    100005    1   tcp    792  mountd
    100005    2   udp    789  mountd
    100005    2   tcp    792  mountd
    100005    3   udp    789  mountd
    100005    3   tcp    792  mountd

------------------------------------------------
软件版本:
[lrjt@Lrj-FC ppc]$ rpm -q nfs-utils
nfs-utils-1.0.7-8

[lrj@Lrj-FC ppc]$ uname -r
2.6.11-1.1369_FC4smp

防火墙已经禁用
-------------------------------------------------


    就在偶已经无奈放弃了的时候,由于要从Suse多给FC划一些磁盘空间,索性将FC重装了一次,结果。。。完全一样的设置,NFS就好了。
    那么,为什么会有如此诡异的情况呢?难道FC也被M$传染了,成了一个“不行重启,重装万岁”的恶心系统?我想啊想啊,查啊查啊,结果终于查到了那个罪魁祸首──SELinux!这个东东相信用过RH系列系统的人都见过,在安装时有这个单独的选项,老版本默认不开启,而新的则是默认开启(其它发行版就不清楚了。。。)。google了一下,它抛弃了传统的“文件所有者就是天”的DAC权限机制,而是采用MAC机制,再加上一层的权限管理,强行进行进程级的权限控制,就是它阻止了nfs要用的的rpc.mountd服务进程,而导致了“Permission Denied”的错误。──不过,为什么不把这个真正的错误原因写入syslog?!害偶白忙了一阵子。。。
    看了一些关于SELinux的资料,感觉确实是一个不错的安全解决方案,只不过,对于我这种对安全要求不高,又经常做底层开发的人来说,那玩意儿就太麻烦了。还是不用的好。