Почему при монтировании общего ресурса NFS с поддержкой Kerberos возникает ошибка «Нет кэша учетных данных»?

Почему при монтировании общего ресурса NFS с поддержкой Kerberos возникает ошибка «Нет кэша учетных данных»?

У меня есть две системы в локальной сети, nfsclient (CentOS 7) и nfsserver (CentOS 6). Эти имена правильно разрешаются в их IP-адреса, и Kerberos работает между ними (nfsserver — это KDC). У меня есть общий ресурс NFSv4 с Kerberized, экспортированный на nfsserver; мой /etc/exports выглядит следующим образом:

/export                 *(rw,sync,fsid=0,no_subtree_check,sec=krb5p)                   
/export/home            *(rw,sync,no_subtree_check,no_root_squash,sec=krb5p)

Я вижу эти экспорты из nfsclient:

[root@nfsclient ~]# showmount -e nfsserver
Export list for nfsserver:
/export/home *
/export      *

Если я удалю параметры sec=krb5p в /etc/exports, я смогу смонтировать общий ресурс из nfsclient, используя

[root@nfsclient ~]# mount -t nfs4 nfsserver:/ /mnt/nfs

Однако когда NFS керберизован, дела идут не так хорошо:

[root@nfsclient ~]# mount -t nfs4 -o sec=krb5p nfsserver:/ /mnt/nfs
mount.nfs4: access denied by server while mounting nfsserver:/

Это сопровождается серией повторяющихся сообщений об ошибках в /var/log/messages:

Jun 22 19:55:02 oxo gssproxy: gssproxy[769]: (OID: { 1 2 840 113554 1 2 2 }) Unspecified GSS failure.  Minor code may provide more information, No credentials cache found
Jun 22 19:55:02 oxo gssproxy: gssproxy[769]: (OID: { 1 2 840 113554 1 2 2 }) Unspecified GSS failure.  Minor code may provide more information, No credentials cache found
Jun 22 19:55:02 oxo gssproxy: gssproxy[769]: (OID: { 1 2 840 113554 1 2 2 }) Unspecified GSS failure.  Minor code may provide more information, No credentials cache found
Jun 22 19:55:02 oxo gssproxy: gssproxy[769]: (OID: { 1 2 840 113554 1 2 2 }) Unspecified GSS failure.  Minor code may provide more information, No credentials cache found
Jun 22 19:55:02 oxo gssproxy: gssproxy[769]: (OID: { 1 2 840 113554 1 2 2 }) Unspecified GSS failure.  Minor code may provide more information, No credentials cache found
Jun 22 19:55:02 oxo gssproxy: gssproxy[769]: (OID: { 1 2 840 113554 1 2 2 }) Unspecified GSS failure.  Minor code may provide more information, No credentials cache found

В журналах на сервере ничего не отображается. Запуск klist на клиенте показывает, что у root есть кэш учетных данных в /tmp/krb5cc_0, поэтому я думаю, что проблема в gss-proxy.

/etc/gssproxy/gssproxy.conf:

[gssproxy]

[service/HTTP]
  mechs = krb5
  cred_store = keytab:/etc/gssproxy/http.keytab
  cred_store = ccache:/var/lib/gssproxy/clients/krb5cc_%U
  euid = 48

[service/nfs-server]
  mechs = krb5
  socket = /run/gssproxy.sock
  cred_store = keytab:/etc/krb5.keytab
  trusted = yes
  kernel_nfsd = yes
  euid = 0

[service/nfs-client]
  mechs = krb5
  cred_store = keytab:/etc/krb5.keytab
  cred_store = ccache:FILE:/var/lib/gssproxy/clients/krb5cc_%U
  cred_store = client_keytab:/var/lib/gssproxy/clients/%U.keytab
  cred_usage = initiate
  allow_any_uid = yes
  trusted = yes
  euid = 0

Поэтому gss-proxy должен искать кэш учетных данных в /var/lib/gssproxy/clients. Он также получает ключи из /etc/krb5.keytab (в котором есть ключи для принципалов nfs/nfsclient и host/nfsclient). Однако /var/lib/gssproxy/clients, похоже, всегда пуст на nfsclient.

Я что-то упустил? Не могу понять, что именно не так с монтированием этого ресурса.

решение1

Проблема с конфигурацией файла по умолчанию при определении пути кэша. Попробуйте с этой конфигурацией клиента, в /etc/gssproxy/gssproxy.conf:

[service/nfs-client]
  mechs = krb5
  cred_store = keytab:/etc/krb5.keytab
  cred_store = ccache:FILE:/tmp/krb5cc_%U
  cred_usage = initiate
  allow_any_uid = yes
  trusted = yes
  euid = 0
  debug = true

решение2

убедитесь, что ваш клиент подключен к домену.

ipa-client-install --force-join

Тогда убедитесь, что у вас есть билет.

kinit admin

и затем дважды проверьте krb5.keytab

restorecon -v /etc/krb5.keytab

убедитесь, что ваш клиент находится в keytab

kinit -k

host/ < client > . < domain > @REALM

Затем вы сможете выполнить монтирование с помощьюsec=krb5p

Связанный контент