¿Por qué aparece el error "sin caché de credenciales" al montar un recurso compartido NFS Kerberizado?

¿Por qué aparece el error "sin caché de credenciales" al montar un recurso compartido NFS Kerberizado?

Tengo dos sistemas en una red local, nfsclient (CentOS 7) y nfsserver (CentOS 6). Estos nombres se resuelven correctamente en sus direcciones IP y Kerberos funciona entre ellos (nfsserver es el KDC). Tengo un recurso compartido NFSv4 Kerberizado exportado a nfsserver; mi /etc/exports es el siguiente:

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

Puedo ver estas exportaciones desde nfsclient:

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

Si elimino las opciones sec=krb5p en /etc/exports, puedo montar el recurso compartido desde nfsclient usando

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

Sin embargo, cuando NFS está Kerberizado, las cosas no van tan bien:

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

Esto va acompañado de una serie de mensajes de error repetidos en /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

No aparece nada en los registros del servidor. Al ejecutar klist en el cliente se muestra que root tiene un caché de credenciales en /tmp/krb5cc_0, por lo que me hace pensar que hay un problema con 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

Entonces gss-proxy debe estar buscando el caché de credenciales en /var/lib/gssproxy/clients. También obtiene claves de /etc/krb5.keytab (que tiene claves para los principales nfs/nfsclient y host/nfsclient). Sin embargo, /var/lib/gssproxy/clients parece estar siempre vacío en nfsclient.

¿Me estoy perdiendo de algo? No puedo entender qué es exactamente lo que va mal al montar este recurso compartido.

Respuesta1

Hay un problema con la configuración del archivo predeterminado al definir la ruta del caché. Pruebe con esta configuración del cliente, en /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

Respuesta2

asegúrese de que su cliente esté unido al dominio.

ipa-client-install --force-join

Entonces asegúrate de tener un boleto

kinit admin

y luego verifique dos veces krb5.keytab

restorecon -v /etc/krb5.keytab

asegúrese de que su cliente esté en la tabla de claves

kinit -k

host/ < client > . < domain > @REALM

Entonces deberías poder montar consec=krb5p

información relacionada