Ich versuche derzeit, einen NFSv4-Server unter FreeBSD einzurichten. Ich habe umfangreiche Erfahrung damit auf anderen Unices (Solaris und Linux), aber ich bin ziemlich neu in FreeBSD.
Mein Ziel ist es, Folgendes zu erreichen:
- Vom FreeBSD-System bereitgestellte Dateien
- Das einzige Sicherheitsmodell sollte krb5p sein
- Clients sind Linux (Ubuntu) und OSX
Derzeit habe ich es geschafft, die Dinge so einzurichten, dass ich ein gültiges TGT benötige, um auf das Dateisystem zugreifen zu können. Nach dem Versuch, auf diese Dateien zuzugreifen, kann ich klist
auf dem Client ausgeführt werden und feststellen, dass der nfs/domainname
Principal abgerufen wurde. Dies deutet darauf hin, dass der Kerberos-Teil des NFS-Mount korrekt ist.
Mein Problem ist, dass alle Clientzugriffe weiterhin über den nobody
Benutzer ausgeführt werden. Ich kann die Berechtigungen sehen, wenn ich es tue ls -l
. Sogar die Benutzerzuordnung funktioniert ordnungsgemäß, aber wenn nobody
ich keine Berechtigung habe, etwas mit den Dateien zu tun, wird mir eine Berechtigung verweigert.
Hier ist eine Beispielinteraktion vom Client (in diesem Fall Ubuntu, aber dasselbe passiert unter OSX). In diesem Beispiel /export/shared/testshare
ist das freigegebene Verzeichnis vom FreeBSD-Server:
(Ich habe den tatsächlichen Domainnamen in domain
und den Kerberos-Realmnamen in geändert. 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
Serverkonfiguration
Ich hatte einige Probleme, einen umfassenden Leitfaden zum Einrichten von NFSv4 unter FreeBSD zu finden. Dies ist an sich schon etwas überraschend, da ich festgestellt habe, dass Informationen darüber, wie man Dinge in FreeBSD macht, sehr gut sind.
Hier sind die relevanten Zeilen in /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"
Hier ist der Inhalt von /etc/exports
:
/export/shared/testshare -sec=krb5p
V4: / -sec=krb5p
Ein weiterer interessanter Aspekt ist, dass ich tcpdump
beim Aufzeichnen des NFS-Netzwerkverkehrs zwischen Client und Server NFS3- Pakete zusammen mit den NFS4- Paketen gesehen habe. Beide Pakettypen enthielten verschlüsselte Daten, daher denke ich immer noch, dass Kerberos verwendet wurde, aber angesichts der obigen Konfiguration hätte ich erwartet, dass es nur NFS4-Verkehr gibt.