
Tengo varios sistemas RHEL6 con la misma configuración. He tenido montajes CIFS funcionando durante años. Sin embargo, en el último mes, dejó de funcionar en uno de mis sistemas y parece que no puedo entender por qué.
(Ver configuración a continuación)
Tengo un principal de host válido en mi tabla de claves. Cuando intento montar un montaje CIFS ( /net/programs
), aparece el siguiente error:
mount error(126): Required key not available
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
El error parece estar relacionado con cifs.upcall y al comparar el registro de depuración, noto la siguiente diferencia en el registro:
krb5_get_init_creds_keytab: -1765328203
handle_krb5_mech: getting service ticket for server0.domain0.local
cifs_krb5_get_req: unable to resolve (null) to ccache
handle_krb5_mech: failed to obtain service ticket (-1765328245)
El error ( -1765328203
) parece asignarse a KRB5_KT_NOTFOUND "Key table entry not found"
.
Sin embargo, los permisos krb5.keytab
parecen correctos y coinciden con mis otros sistemas. klist -k
muestra las claves correctas (que coinciden con mis otros sistemas) y kinit -k
tiene éxito.
Otro comportamiento extraño. Como solución temporal, puedo montar el recurso compartido NTLMSSPI
usando mi nombre de usuario, pero el montaje solo es visible en mi sesión. Si inicio sesión con una nueva sesión, el montaje no aparece. Ni siquiera lo veo /proc/mounts
aunque sí en la sesión original.
Todos mis sistemas están en la versión Kernel.2.6.32-696-23.1y tener versión Samba3.6.23-46.
Configuración:
SMB.CONF:
[global]
workgroup = DOMAIN0
password server = server0.DOMAIN0.LOCAL
realm = DOMAIN0.LOCAL
security = ads
idmap config * : backend
idmap config * : range = 300000-399999
idmap config DOMAIN0:backend = rid
idmap config DOMAIN0:range = 100000-199999
idmap config DOMAIN0:base_rid = 0
template shell = /bin/bash
winbind enum users = no
winbind enum groups = no
winbind separator = +
winbind use default domain = yes
winbind offline logon = false
kerberos method = secrets and keytab
client signing = mandatory
server signing = mandatory
NSSWITCH.CONF:
passwd: files winbind
shadow: files winbind
group: files winbind
hosts: files dns
SYSTEM-AUTH:
auth required pam_env.so
auth sufficient pam_fprintd.so
auth sufficient pam_unix.so try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_winbind.so use_first_pass
auth [default=die] pam_faillock.so authfail deny=3 unlock_time=604800 fail_interval=900
auth required pam_faillock.so authsucc deny=3 unlock_time=604800 fail_interval=900
auth required pam_deny.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_winbind.so
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 minlen=14 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 difok=4 remember=24 maxrepeat=3
password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok
password sufficient pam_winbind.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session required pam_lastlog.so showfailed
session optional pam_oddjob_mkhomedir.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
REQUEST-KEY.CONF
#OP TYPE DESCRIPTION CALLOUT INFO PROGRAM ARG1 ARG2 ARG3 ...
#====== ======= =============== =============== ===============================
create user debug:* negate /bin/keyctl negate %k 30 %S
create user debug:loop:* * |/bin/cat
create user debug:* * /usr/share/keyutils/request-key-debug.sh %k %d %c %S
negate * * * /bin/keyctl negate %k 30 %S
create cifs.spnego * * /usr/sbin/cifs.upcall %k
create cifs.idmap * * /usr/sbin/cifs.idmap %k
create dns_resolver * * /usr/sbin/cifs.upcall %k
KRB5.CONF
[libdefaults]
default_realm = DOMAIN0.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
DOMAIN0.LOCAL = {
kdc = server0.DOMAIN0.LOCAL
}
FSTAB:
//server0.domain0.local/Programs /net/programs cifs noauto,sec=krb5i,multiuser,cifsacl 0 0
RC.LOCAL
/sbin/ntpdate -u server0
/usr/bin/kinit -k
/bin/mount /net/programs
NTP.CONF
server server0.domain0.local iburst