Założenia:
/Volumes/nfsWymagania:
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