Eli*_*son 7 freebsd nfs kerberos nfs4
我目前正在尝试在 FreeBSD 上设置 NFSv4 服务器。我在其他 Unices(Solaris 和 Linux)上有丰富的经验,但我对 FreeBSD 还很陌生。
我的目标是实现以下目标:
目前,我已经设法进行设置,以便我需要一个有效的 TGT 才能访问文件系统。尝试访问这些文件后,我可以klist
在客户端上运行,并且可以看到nfs/domainname
主体已被检索。这表明 NFS 挂载的 Kerberos 部分是正确的。
我的问题是所有客户端访问仍然使用nobody
用户执行。当我这样做时,我可以看到权限ls -l
。即使用户映射工作正常,但除非nobody
有权对文件执行任何操作,否则我的权限被拒绝。
这是来自客户端的示例交互(在本例中为 Ubuntu,但在 OSX 中也会发生同样的情况)。在这个例子中,/export/shared/testshare
是来自 FreeBSD 服务器的共享目录:
(我已将实际域名更改为domain
,并将 Kerberos 领域名称更改为REALM
)
$ kinit
Password for elias@REALM:
$ klist
Ticket cache: FILE:/tmp/krb5cc_1000_GBjtDP
Default principal: elias@REALM
Valid starting Expires Service principal
09/02/2013 09:40:47 10/02/2013 09:40:44 krbtgt/REALM@REALM
$ sudo mount -t nfs4 -osec=krb5p,vers=4 lion:/export/shared/testshare /mnt
$ ls -l /mnt
total 4
-rw-r--r-- 1 nobody nogroup 5 Feb 7 18:17 bar.txt
-rw------- 1 elias nogroup 4 Feb 5 23:09 foo.txt
$ cat /mnt/bar.txt
blah
$ echo foo >>/mnt/bar.txt
bash: /mnt/bar.txt: Permission denied
$ cat /mnt/foo.txt
cat: /mnt/foo.txt: Permission denied
$ klist
Ticket cache: FILE:/tmp/krb5cc_1000_GBjtDP
Default principal: elias@REALM
Valid starting Expires Service principal
09/02/2013 09:40:47 10/02/2013 09:40:44 krbtgt/REALM@REALM
09/02/2013 09:41:56 10/02/2013 09:40:44 nfs/lion.domain@REALM
Run Code Online (Sandbox Code Playgroud)
服务器配置
我在寻找在 FreeBSD 上设置 NFSv4 的综合指南时遇到了很多问题。这本身有点令人惊讶,因为我发现有关如何在 FreeBSD 中进行操作的信息非常好。
以下是 中的相关行/etc/rc.conf
:
rpcbind_enable="YES"
nfs_server_enable="YES"
nfsv4_server_enable="YES"
nfsuserd_enable="YES"
nfscbd_enable="YES"
mountd_enable="YES"
gssd_enable="YES"
rpc_lockd_enable="YES"
rpc_statd_enable="YES"
zfs_enable="YES"
Run Code Online (Sandbox Code Playgroud)
以下是内容/etc/exports
:
/export/shared/testshare -sec=krb5p
V4: / -sec=krb5p
Run Code Online (Sandbox Code Playgroud)
另一个有趣的方面是,当我用来tcpdump
记录客户端和服务器之间的 NFS 网络流量时,我看到NFS3数据包与NFS4数据包一起。这两种数据包类型都包含加密数据,所以我仍然认为使用了 Kerberos,但考虑到上面的配置,我原以为只有 NFS4 流量。
归档时间: |
|
查看次数: |
1526 次 |
最近记录: |