📱 Erkannter Endgerättyp ⛱️ Tag und Nacht. Verbraucht keinen oder einen 🍪.
guest
Login 🧬 0 Ihre DNS in den Krei.se-DNS-Servern, führt zum Bio-Labor 🍪 0 Anzahl Ihrer gespeicherten Kekse, führt zur Keksdose

🐩 Kerberos NFS4-Server

https://github.com/gssapi/gssproxy/blob/main/docs/NFS.md

NFS Server

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

idmapd BYOD

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

rpcbind deaktivieren

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

Cheap Tricks

Wer hier kein SSSD installieren will nur um die User aus LDAP und Kerberos zu sehen kann

good to know

rpc.gssd searches in the following order for a principal to use. The first matching credential is used. For the search, and are replaced with the local system's hostname and Kerberos realm.

$@ root/@ nfs/@ host/@ root/@ nfs/@ host/@ https://manpages.debian.org/buster/nfs-common/rpc.gssd.8.en.html

Current PTF

Hintergrund ändern. Verbraucht keinen oder einen 🍪.

Verknüpften Viewport öffnen

🎮 Steuerung
Dokumentation 🕹️
Sie sind leider kein Entwickler :(

Content Nodes Amount

Diligence / PTF Amount

FPS

Vertex-Count