Os tíquetes de serviço Kerberos são armazenados em cache pelo mount.cifs ou pelo kernel?

1

Ao montar um compartilhamento CIFS usando o krbr5i e destruindo meus tickets do Kerberos com kdestroy , ainda é possível montar outros compartilhamentos no mesmo servidor. Como isso é possível? O mount.cifs precisa enviar o ticket de serviço para o servidor de compartilhamento novamente? O bilhete está em algum lugar? Isso é tratado pelo kernel (ou cifs.upcall)?

Após desmontar todos os compartilhamentos, o mount.cifs falhará (como esperado).

Etapas para reproduzir:

$ # Aquire tgt:
$ kinit
Password for [email protected]:
$ # Mount share1 and get cifs ticket:
$ sudo mount.cifs -v -o sec=krb5i,cache=strict,rw,user=sahisb,cruid=$UID,cifsacl,nounix,multiuser,vers=2.1 //dc.domain.example.com/share1 /share1
mount.cifs kernel mount options: ip=[redacted],unc=\dc.domain.example.com\share1,sec=krb5i,cache=strict,cifsacl,nounix,multiuser,vers=2.1,cruid=1297401199,user=sahisb,pass=********
$ # Destroy tgt and cifs ticket:
$ kdestroy
$ # Mount share2. I expected this to fail but it will succeed:
$ sudo mount.cifs -v -o sec=krb5i,cache=strict,rw,user=sahisb,cruid=$UID,cifsacl,nounix,multiuser,vers=2.1 //dc.domain.example.com/share2 /share2
mount.cifs kernel mount options: ip=[redacted],unc=\dc.domain.example.com\share2,sec=krb5i,cache=strict,cifsacl,nounix,multiuser,vers=2.1,cruid=1297401199,user=sahisb,pass=********

Neste ponto, a lista de k ainda não consegue encontrar um cache de credenciais. Agora vamos tentar desmontar os compartilhamentos e montá-los novamente:

$ umount /share1
$ umount /share2
$ sudo mount.cifs -v -o sec=krb5i,cache=strict,rw,user=sahisb,cruid=$UID,cifsacl,nounix,multiuser,vers=2.1 //dc.domain.example.com/share2 /share2
mount.cifs kernel mount options: ip=[redacted],unc=\dc.domain.example.com\share2,sec=krb5i,cache=strict,cifsacl,nounix,multiuser,vers=2.1,cruid=1297401199,user=sahisb,pass=********
mount error(126): Required key not available

Que falha como esperado.

    
por sahisb 04.06.2018 / 20:04

1 resposta

1

Ao montar um compartilhamento CIFS / SMB, uma sessão é criada (se as credenciais - nesse caso, um tíquete de serviço do kerberos - estiverem corretas). Depois que uma sessão é criada, não precisamos mais nos autenticar.

Como o share1 e o share2 são fornecidos pelo mesmo serviço (dc.domain.example.com), todas as solicitações para esses arquivos estão usando a mesma sessão.

    
por 06.06.2018 / 18:25