Założenia:
/Volumes/nfs
Wymagania:
Do /etc/rc.conf
dodajemy:
gssd_enable="YES" gssd_flags="-h -v" nfs_server_enable="YES" nfsv4_server_enable="YES" nfsuserd_enable="YES" nfsuserd_flags="-verbose" mountd_enable="YES"
Do /etc/exports
dodajemy:
V4: / -sec=krb5 /Volumes/nfs -sec=krb5 -maproot=root
Każdorazowo po edycji w/w pliku musimy przełować mountd:
# service mountd reload
W /etc/sysctl.conf
wymuszamy stosowanie wersji 4 NFS-a:
vfs.nfsd.server_max_nfsvers=4 vfs.nfsd.server_min_nfsvers=4
Tworzymy plik z konfiguracją, /etc/krb5.conf
:
[libdefaults] default_realm = AREA.LAN [realms] AREA.LAN = { kdc = nasz_serwer.area.lan admin_server = nasz_serwer.area.lan } [domain_realm] .area.lan = AREA.LAN
Musimy wygenerować keytaba z principalem nfs/hostname
:
kadmin> add -r nfs/nfs01.area.lan Max ticket life [1 day]: Max renewable life [1 week]: Principal expiration time [never]: Password expiration time [never]: Attributes []: kadmin> ext_keytab nfs/nfs01.area.lan
Nasz keytab powinien wyglądać tak:
# ktutil list FILE:/etc/krb5.keytab: Vno Type Principal Aliases 1 aes256-cts-hmac-sha1-96 nfs/nfs01.area.lan@AREA.LAN 1 des3-cbc-sha1 nfs/nfs01.area.lan@AREA.LAN 1 arcfour-hmac-md5 nfs/nfs01.area.lan@AREA.LAN
Uruchamiamy kolejno serwisy:
# sysctl vfs.nfsd.server_max_nfsvers=4 # sysctl vfs.nfsd.server_min_nfsvers=4 # service gssd start # service nfsd start
Do /etc/rc.conf
dodajemy:
gssd_enable="YES" gssd_flags="-v" hostid_enable="YES" nfsuserd_enable="YES" nfscbd_enable="YES"
Wpis do /etc/fstab
nfs01.area.lan:/Volumes/nfs /Volumes/nfs nfs rw,nfsv4,sec=krb5,gssname=host,late 0 0
Kilka słów wyjaśnienia opcji odnośnie montowania NFS-a:
Poniżej kilka obserwacji odnośnie działania w/w skonfigurowanego systemu:
Daemon gssd wykorzystuje standardowy keytab /etc/krb5.keytab
do odczytu principala nfs/hostname
do uwierzytelaniania Kerberosem. Niestety robi to tak niefortunnie, że bierze pierwsze z brzegu principal, jeśli więc mamy zapisane w keytabie więcej principali, musimy zadbać, by pierwszym z nich był nfs/hostname
. Poniższy keytab nie będzie działać z gssd:
# ktutil list FILE:/etc/krb5.keytab: Vno Type Principal Aliases 1 aes256-cts-hmac-sha1-96 host/nfs01.area.lan@AREA.LAN 1 des3-cbc-sha1 host/nfs01.area.lan@AREA.LAN 1 arcfour-hmac-md5 host/nfs01.area.lan@AREA.LAN 1 aes256-cts-hmac-sha1-96 nfs/nfs01.area.lan@AREA.LAN 1 des3-cbc-sha1 nfs/nfs01.area.lan@AREA.LAN 1 arcfour-hmac-md5 nfs/nfs01.area.lan@AREA.LAN
Poniżej kroki jak utworzyć prawidłowego keytab-a:
kadmin> ext_keytab -k /tmp/nfs-nfs01.area.lan nfs/nfs01.area.lan kadmin> ext_keytab -k /tmp/host-nfs01.area.lan host/nfs01.area.lan
# cp /tmp/fs-nfs01.area.lan /tmp/krb5.keytab # ktutil copy /tmp/host-nfs01.area.lan /tmp/krb5.keytab # mv /tmp/krb5.keytab /etc/
Efekt, jaki powinniśmy uzyskać:
# ktutil list FILE:/etc/krb5.keytab: Vno Type Principal Aliases 1 aes256-cts-hmac-sha1-96 nfs/nfs01.area.lan@AREA.LAN 1 des3-cbc-sha1 nfs/nfs01.area.lan@AREA.LAN 1 arcfour-hmac-md5 nfs/nfs01.area.lan@AREA.LAN 1 aes256-cts-hmac-sha1-96 host/nfs01.area.lan@AREA.LAN 1 des3-cbc-sha1 host/nfs01.area.lan@AREA.LAN 1 arcfour-hmac-md5 host/nfs01.area.lan@AREA.LAN