Mantenha o ticket do kerberos através da invocação do sudo

6

Em uma máquina linux comum, quando eu uso sudo -s como usuário normal, eu me torno root, mas HOME ainda aponta para ~user , então todo administrador tem seu próprio ambiente, etc. (isso é sem env_reset ou always_set_home set).

Em um sistema em que os diretórios base residem em um sistema de arquivos do AFS, isso também funciona, se a variável de ambiente KRB5CCNAME for preservada, pois o root pode ler esse arquivo em /tmp .

Mas se eu usar sudo em tal sistema para alterar um usuário não-raiz local (por exemplo, o usuário dedicado para um determinado serviço), o novo usuário não poderá acessar o cache do kerberos (como é de propriedade do usuário antigo e tem o modo 600). Mas se eu unset KRB5CCNAME && kinit user && aklog && exec bash , eu tenho acesso ao meu ambiente novamente.

Então a pergunta é: Existe uma maneira limpa de fazer o sudo pegar os tickets do kerberos que eu tinha antes e adicioná-los ao cache de tickets do kerberos do novo usuário?

    
por Joachim Breitner 10.08.2012 / 13:55

1 resposta

2

Eu não acredito que haja algum suporte atual para isso em qualquer um dos módulos PAM do Kerberos que eu saiba. Eu posso ver como isso poderia ser implementado, no entanto; não há nada inerentemente impossível sobre isso. Basicamente, pam_krb5 precisaria obter código para abrir um cache de ticket apontado pelo atual KRB5CCNAME , iterar por ele e copiar cada ticket encontrado no cache do ticket recém-criado após a configuração inicial do cache.

Isso precisaria ser uma opção não padrão, já que você daria suas credenciais ao usuário de destino (inclusive a qualquer outro que possa se tornar esse usuário), o que é potencialmente perigoso.

Se você precisar de uma solução imediata, considere usar ksu se não precisar de todo o poder de sudo . ksu já tem suporte para manter o cache atual do tíquete Kerberos (pelo menos na versão MIT Kerberos).

    
por 17.03.2013 / 08:35