Добрый день, коллеги. Мучаюсь 5й день, не могу освоить NFS + Kerberos. Сталкиваюсь с Kerberos'ом 1й раз. До этого NFS шару с sec=sys делал не раз. Задача - сделать в офисе сетевую ФС, к которой все подключаются с desktop'ов/laptop'ов, работают с файлами, имеют разграничения по правам доступа на r/rw/rwx и т. п. NFS - потому что все на Linux.
В Интернете много инфы, но вся какая-то обрывочная, не законченная.
Шёл по этим официальным мануалам: Раз, два.
И всё в этих мануалах меня устраивает и всё понятно, если б работало...
Что сделано и что хорошо умею: DNS в два «View», NTP.
Что хочу: подключение к ФС с любого ПК по любому user/pass - без привязки к host'у. Возможно ли это вообще? По мануалу openSUSE - да, там просто создаётся principal «suzanne», задаётся пароль, и должно работать. Но в других источниках говорится, что на NFS клиенты тоже нужно класть keytab файл.. Кому верить?
Если подключаться без keytab'а на клиенте, то явно ругается:
journalctl -u rpc-gssd.service
ERROR: Key table file '/etc/krb5.keytab' not found while beginning keytab scan for keytab 'FILE:/etc/krb5.keytab'
ERROR: gssd_refresh_krb5_machine_credential_internal: no usable keytab entry found in keytab /etc/krb5.keytab for connection with host main.3r.ru
Подумал, что нужно на сервер положить keytab'ы от принципала сервера, а на клиенты нужно выдавать keytab'ы клиента...
Сервер:
> sudo klist -k
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
3 host/main.3r.ru@3R.RU
3 host/main.3r.ru@3R.RU
2 nfs/main.3r.ru@3R.RU
2 nfs/main.3r.ru@3R.RU
Клиент:
> sudo klist -k
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
2 nfs/NeWTs-SUSE-Laptop.3r.ru@3R.RU
2 nfs/NeWTs-SUSE-Laptop.3r.ru@3R.RU
И...
> sudo mount -t nfs4 -o sec=krb5 main.3r.ru:/opt/docs/ /mnt/
mount.nfs4: access denied by server while mounting main.3r.ru:/opt/docs/
При этом rpc.gssd на клиенте уже не ругается.
Вобщем, я пока не до конца понимаю сам принцип, что куда зачем...
1) Можно ли для NFS клиентов не выдавать krb5.keytab? Можно ли только по user/pass? kinit же, вроде?..
2) Если нельзя не выдавать, что там должно быть? Привязка по username или к хосту?
3) Можно ли не привязываться к reverse DNS? Ну не хочу я быть настолько параноиком. Тем более, что клиенты - DHCP. rdns = false это же оно?
4) Можно ли вообще клиентов по DNS даже по прямому просмотру не проверять и не привязывать?
Сейчас в тестовой системе 3 хоста: сервер NFS (main.3r.ru), сервер KDC (krb.3r.ru), клиент (у него есть Хостнэйм, но это важно? Он не прописан в DNS, это просто ноут с просто DHCP)..
Настройка конфига на krb сервере:
# cat /etc/krb5.conf
includedir /etc/krb5.conf.d
[libdefaults]
dns_canonicalize_hostname = false
rdns = false
default_realm = 3R.RU
ticket_lifetime = 16h
renew_lifetime = 7d
clockskew = 150
[realms]
3R.RU = {
kdc = krb.3r.ru.:88
admin_server = krb.3r.ru
default_domain = 3r.ru
}
[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON
[domain_realm]
.3r.ru = 3R.RU
3r.ru = 3R.RU
Настройка конфига на NFS Server'е (krb клиенте):
~> cat /etc/krb5.conf
[libdefaults]
default_realm = 3R.RU
dns_canonicalize_hostname = false
rdns = false
[realms]
3R.RU = {
kdc = krb.3r.ru
admin_server = krb.3r.ru
}
[domain_realm]
.3r.ru = 3R.RU
#www.example.org = EXAMPLE.COM
Настройка зоны DNS:
> cat /var/lib/named/master/db.lan.3r.ru
_kerberos._udp.3R.RU. IN SRV 0 0 88 krb.3r.ru.
_kerberos._tcp.3R.RU. IN SRV 0 0 88 krb.3r.ru.
_kerberos-adm._tcp.3R.RU. IN SRV 0 0 749 krb.3r.ru.
И это работает - клиент NFS и без настройки конфига /etc/krb5.conf (точнее, с дефолтным) тоже общается с Kerberos сервером. Т. е. работает kinit - билеты выдаются.
Но я перепробовал уже, кажется, все варианты.... Может кто-то подсказать что куда и зачем класть, чтобы NFS подключился?