Onde os tokens do AFS são armazenados e como faço para executá-los?

1

Eu tenho a seguinte situação, eu tenho uma sessão de tela GNU em execução, onde não consigo mais acessar o AFS - meu token expirou. No entanto, posso acessá-lo de um novo shell. A diferença para esta questão é que eu não tenho um ticket do Kerberos (bem, não para o reino que o aklog é procurando por), então eu não posso chamar aklog. Eu também não posso conseguir tal ingresso. Não tenho ideia de como o AFS está configurado, mas funciona.

Agora, os tickets do Kerberos são "armazenados" em / tmp / krb5cc * e apontados por uma variável chamada KRB5CCNAME. Se eu tiver esse problema com o Kerberos e o screen / tmux, eu posso fazer kinit ou transplantar o ticket mais recente para o shell antigo definindo KRB5CCNAME.

Eu me pergunto como as credenciais do AFS são apontadas, e se eu posso transplantá-las da shell externa (a que eu ssh em, que tem acesso ao AFS) para a shell interna (aquela que eu obtenho após screen -r , que não tem mais acesso ao AFS). Parece não haver nenhuma variável de ambiente relevante alterada entre as duas camadas. strace tokens me diz que acessa /proc/fs/openafs/afs_ioctl , o que sugere que ele está ligado ao processo e usando um recurso especial do kernel, o que tornaria muito difícil. Alguma idéia de como eu posso ter o acesso do AFS de volta ao meu shell sem fechá-lo e abrir um novo?

    
por jdm 31.07.2015 / 08:21

1 resposta

1

Quando você efetuar login via ssh e pam_afs_session.so estiver ativo, ele gerará um ticket do Kerberos e o usará para criar um token do AFS. Quando você efetua logout, ele removerá o ticket do Kerberos e o token do AFS.

Como você observou, os tickets do Kerberos são armazenados em arquivos, e os tokens do AFS são armazenados no kernel, em um PAG (Process Authentication Group). Quando você se conecta por meio de uma segunda sessão SSH, a biblioteca pam_afs_session.so cria um novo ticket Kerberos em um novo arquivo e um novo token do AFS em um novo PAG.

A maneira mais fácil de manter seu token AFS ativo em uma sessão de tela GNU é:

  1. Crie um novo arquivo de tíquete do Kerberos. O existente é provavelmente algo como / tmp / krb5cc_UID_RANDOM . Faça um com uma nova string RANDOM.
  2. Copie o arquivo de tíquete existente para o novo que você acabou de criar.
  3. Altere (e exporte) a variável de ambiente KRB5CCNAME para o novo nome que você criou.
  4. Iniciar tela -r
  5. Agora você pode sair de sua casca externa. Isso removerá seu tíquete Kerberos do seu arquivo de tíquete antigo, mas sua cópia ainda será válida no shell interno. No entanto, também remove seu token do AFS, portanto ...
  6. Quando você se reconectar ao shell interno, execute aklog . Isso copiará seu tíquete Kerberos (que você salvou) para um novo token do AFS. Deve permanecer válido até expirar. Antes de sair do seu shell interno, você provavelmente deve executar kdestroy para remover o tíquete do Kerberos do qual você não precisará mais.
por 07.05.2018 / 19:55