NFS。 非根安装请求

我试图让我的NFS服务器允许非根挂载请求。

服务器:Debian Squeeze,内核2.6.32-5-686

现在我拥有:root(或sudoes)可以挂载NFS文件系统,但是普通用户不能。

为什么我认为这是可能的:

  1. FreeBSD文档: http : //www.unix.com/man-page/FreeBSD/8/mountd/选项-n
  2. 面向Linux的论坛的问题,像这样: http : //www.linuxquestions.org/questions/linux-software-2/non-root-account-unable-to-mount-a-nfs-connection-926985/

I. Debian服务器(10.18.51.1)

安装的软件包: nfs-kernel-server,nfs-common,portmap

1)/ etc / exports:

/usr/appl/ 10.18.51.0/24(ro,no_subtree_check) /usr/private/ 10.18.51.11(rw,sync,no_subtree_check) 

2)/ var / lib / nfs / etab

 /usr/private 10.18.51.11(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534) /usr/appl 10.18.51.0/24(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534) 

3)导出文件夹的权限:

 $ ls -lh -d /usr/appl drwxr-xr-x 3 root root 4.0K Feb 25 17:16 /usr/appl $ ls -lh -d /usr/private drwxrwxrwx 4 root root 4.0K Feb 27 12:19 /usr/private 

II。 Ubuntu客户端(10.18.51.11)

安装软件包: nfs-common portmap

 $ mount 10.18.51.1:/usr/appl /mnt/nfs/appl mount: only root can do that 

尽pipe/ etc / fstab中有用户标签:

 10.18.51.1:/usr/appl /mnt/nfs/appl nfs ro,async,nodev,nosuid,user 0 0 10.18.51.1:/usr/private /mnt/nfs/private nfs rw,rsize=8192,hard,intr,nfsvers=3,tcp,noatime,nodev,async,user 0 0 

III。 FreeBSD客户端(10.18.51.3)

1)

 $ cat /etc/rc.conf ... nfs_client_enable="YES" 

2)

 $ mount 10.18.51.1:/usr/appl /mnt/nfs/appl [tcp] 10.18.51.1:/usr/appl: Permission denied [tcp] 10.18.51.1:/usr/appl: Permission denied [tcp] 10.18.51.1:/usr/appl: Permission denied ... 

有趣的是,按Enter键后,打印权限被拒绝,然后等待一段时间,然后尝试连接到10.18.51.1,然后再打印权限被拒绝。 我知道连接到服务器因为我在服务器上使用tcpdump(tcpdump主机10.18.51.3):

 $ sudo tcpdump host 10.18.51.3 [sudo] password for sukharevd: tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 23:32:28.029560 ARP, Request who-has msiuioo.local tell 10.18.51.3, length 28 23:32:28.029598 ARP, Request who-has msiuioo.local tell 10.18.51.3, length 28 23:32:28.029661 ARP, Reply msiuioo.local is-at 00:21:85:51:44:02 (oui Unknown), length 28 23:32:28.031075 IP 10.18.51.3.35034 > msiuioo.local.sunrpc: UDP, length 56 23:32:28.031401 IP msiuioo.local.sunrpc > 10.18.51.3.35034: UDP, length 28 23:32:28.033275 IP 10.18.51.3.17157 > msiuioo.local.<b>nfs</b>: Flags [S], seq 4085518488, win 65535, options [mss 1460,nop,wscale 3,sackOK,TS val 405930 ecr 0], length 0 23:32:28.033326 IP msiuioo.local.nfs > 10.18.51.3.17157: Flags [S.], seq 1703965537, ack 4085518489, win 5792, options [mss 1460,sackOK,TS val 2186703 ecr 405930,nop,wscale 6], length 0 23:32:28.034717 IP 10.18.51.3.17157 > msiuioo.local.nfs: Flags [.], ack 1, win 8326, options [nop,nop,TS val 405930 ecr 2186703], length 0 23:32:28.034912 IP 10.18.51.3.4026012106 > msiuioo.local.<b>nfs</b>: 40 null 23:32:28.034978 IP msiuioo.local.nfs > 10.18.51.3.17157: Flags [.], ack 45, win 91, options [nop,nop,TS val 2186704 ecr 405930], length 0 23:32:28.035063 IP msiuioo.local.nfs > 10.18.51.3.4026012106: reply ok 24 null 23:32:28.036892 IP 10.18.51.3.17157 > msiuioo.local.nfs: Flags [F.], seq 45, ack 29, win 8326, options [nop,nop,TS val 405930 ecr 2186704], length 0 23:32:28.036986 IP msiuioo.local.nfs > 10.18.51.3.17157: Flags [F.], seq 29, ack 46, win 91, options [nop,nop,TS val 2186704 ecr 405930], length 0 23:32:28.039021 IP 10.18.51.3.17157 > msiuioo.local.nfs: Flags [.], ack 30, win 8325, options [nop,nop,TS val 405930 ecr 2186704], length 0 23:32:28.039124 IP 10.18.51.3.40381 > msiuioo.local.sunrpc: UDP, length 56 23:32:28.039426 IP msiuioo.local.sunrpc > 10.18.51.3.40381: UDP, length 28 

有什么build议么?

UPD:解决了一半的问题。 我应该用过

 mount /mnt/nfs/appl 

代替

 mount 10.18.51.1:/usr/appl /mnt/nfs/appl 

在Linux(Ubuntu)客户端上。

但是在FreeBSD中安装仍然有问题。

使用非根安装方式遇到问题的最可能原因是默认情况下处于“安全”导出选项状态。 它禁止使用大于1024的源端口来装入请求。在大多数系统上,绑定到小于1024的端口需要root访问权限,所以这是确保挂载是由root创build的相当体面的方式。

这个问题,正如我的NfSpy渗透testing工具的自述文件中所解释的,NFS协议(版本2,3和4,没有正确的configuration)完全信任在来自客户端机器的请求中发送的用户ID。 通过将请求限制为仅由root创build的请求,您将信任限制在只有客户端机器上具有root访问权限的用户。 如果没有这个设置(在导出文件中使用“不安全”),任何用户都可以声称拥有任何UID并访问导出文件。

在Linux上工作的原因可能是因为/ bin / mount是setuid root:

 ~$ ls -l /bin/mount -rwsr-xr-x 1 root root 72188 2011-01-20 13:54 /bin/mount 

只是一个预感,但在你的FreeBSD系统上检查mount二进制文件的权限。 如果 setuid,那么你仍然有一个问题,我不知道它是什么。 如果没有,那么这将解释发生了什么事情。

祝你好运,但请考虑允许系统上的任何用户访问您的服务器上的任何文件的安全隐患。 我推荐使用带有GSSauthentication机制的NFS4,而不是传统的AUTH_SYS风格。