https://github.com/gssapi/gssproxy/blob/main/docs/NFS.md
apt install nfs-kernel-server
Der Server braucht NUR gssproxy. 24-nfs-server in /etc/gssproxy stellt beim Start von gssproxy.service sicher, dass der Kernel immer nach gssproxy für auth fragt.
Da gssproxy pro Service unterschiedliche Keytabs erlaubt ist das Service-Principal völlig egal, am besten nur für nfs/ ein keytab anlegen:
root@server:/etc/gssproxy# cat 24-nfs-server.conf
[service/nfs-server]
mechs = krb5
socket = /run/gssproxy.sock
# das kann man auch einfach auf krb5.keytab lassen, das kann mehrere principals speichern
cred_store = keytab:/etc/krb5.keytab.nfs
trusted = yes
kernel_nfsd = yes
euid = 0
debug_level = 1
und nur für nfs ein principal erstellen:
kadmin.local: addprinc -randkey nfs/servername.domain.tld@DOMAIN.TLD
kadmin.local: ktadd -k /etc/krb5.keytab.nfs nfs/servername.domain.tld@DOMAIN.TLD
Diese Principals sollten dann auch im LDAP auftauchen.
@NOTE ausprobieren ob auch nfs/service.domain.tld@DOMAIN.TLD jetzt funktioniert (?? 2026 keine Ahnung was ich da 2025 wollte)
Jetzt weiss ichs aber wieder: das nfs/ principal muss exakt der Servername sein auf den dann verbunden wird also für shares.domain.tld auch nfs/shares.domain.tld@DOMAIN.TLD
/etc/exports
# root-fs - hier einfach Ordner anlegen, können direkt als Share gemounted werden
# fsid=0 --> root export, hier müssen die andern exports drunterliegen
# verkürzt den export-pfad von /srv/nfs/ auf /
/srv/nfs 10.126.0.0/255.255.0.0(fsid=0,crossmnt,rw,sync,root_squash,no_all_squash,no_subtree_check,sec=krb5)
# Home-FS ohne Crossmnt
/srv/nfs/homes 10.126.0.0/255.255.0.0(fsid=1,rw,sync,root_squash,no_all_squash,no_subtree_check,sec=krb5)
Der NFS-Server braucht kein use_gssproxy für rpc-gssd
/etc/nfs.conf
[nfsd]
vers3=n
vers4=y
vers4.0=n
vers4.1=n
vers4.2=y
NFS4 braucht für die Übersetzung der lokalen uid von und zum String in NFS paketen ala user@domain.tld idmapd.
Auch wenn die man page sagt das ist der hostname -f minus dem host part ... das klappt nicht weil idmapd die NIS / YP domain ausliest. Zum testen:
root@host:~# apt install yp-tools
root@host:~# ypdomainname
ypdomainname: Local domain name not set
Wer keine Domain manuell festlegen will nutzt den TXT-Record
_nfsv4idmapdomain.domain.tld TXT domain.tld
Das klingt unnötig kompliziert ist aber so. Wer die ypdomain festlegen will:
root@host:~# echo "kernel.domainname = domain.tld" | tee /etc/sysctl.d/99-domainname.conf
root@host:~# sysctl -p /etc/sysctl.d/99-domainname.conf
Braucht man nicht für NFS4
systemctl disable rpcbind.target
systemctl disable rpcbind.socket
systemctl disable rpcbind.service
systemctl stop rpcbind.target
systemctl stop rpcbind.socket1
systemctl stop rpcbind.service
Wer hier kein SSSD installieren will nur um die User aus LDAP und Kerberos zu sehen kann
rpc.gssd searches in the following order for a principal to use. The first matching credential is used. For the search,