Назад | Перейти на главную страницу

Кэшируются ли билеты службы Kerberos в mount.cifs или в ядре?

При монтировании общего ресурса CIFS с помощью krbr5i и уничтожении моих билетов Kerberos с помощью kdestroy после этого все еще можно смонтировать другие общие ресурсы на том же сервере. Как это возможно? Разве mount.cifs не должен снова отправлять билет службы на общий сервер? Билет где-то кеширован? Это обрабатывается ядром (или cifs.upcall)?

После размонтирования всех общих ресурсов mount.cifs завершится ошибкой (как и ожидалось).

Действия по воспроизведению:

$ # Aquire tgt:
$ kinit
Password for sahisb@DOMAIN.EXAMPLE.COM:
$ # 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=********

На этом этапе klist все еще не может найти кеш учетных данных. Теперь попробуем размонтировать общие ресурсы и снова смонтировать их:

$ 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

Что не удалось, как и ожидалось.

При монтировании общего ресурса CIFS / SMB создается сеанс (если учетные данные - в данном случае билет службы Kerberos - для службы верны). После создания сеанса нам больше не нужно аутентифицироваться.

Поскольку share1 и share2 предоставляются одной и той же службой (dc.domain.example.com), все запросы к этим файлам используют один и тот же сеанс.