É possível ter um daemon executando um processo como outro usuário sem ter um daemon de superusuário?

2

Estou trabalhando em um projeto no momento em que tenho um daemon que precisa executar um processo como outro usuário. Eu gostaria que o daemon não fosse executado como root, se possível. No entanto, estou lutando para descobrir a melhor forma de fazer isso.

FYI, todos os itens a seguir estão sendo feitos em python, mas não preciso usar python.

Eu tenho um protótipo para o PAM e o Autenticação do Kerberos (GSSAPI), onde eu posso autenticar com sucesso o usuário. Agora, se eu executar um daemon de superusuário, posso chamar o SO e gerar o processo usando o seguinte,

ksu kerbuser -c "/bin/bash authed-process.py"

Isto é seguro, tanto quanto eu saiba, uma vez que para falsificar isso, você precisaria de um krbtgt ou da senha do usuário.

Então, a outra coisa que considerei, foi armazenar a senha do usuário no getpass do usuário python e depois passar a senha por aí (essa é uma solução bastante insegura). Eu não vou fazer isso.

A última coisa em que estou pensando ... Se eu usar os tickets do kerberos, estou certo em pensar que posso usar a ferramenta de linha de comando 'ksu' para gerar um processo como esse usuário? Eu estou apenas trabalhando em um POC, mas imaginei que alguém aqui poderia ter uma maneira melhor de fazer isso? Não existe um padrão para executar um daemon sem privilégios que possa executar processos como usuários autenticados?

Este é o meu primeiro post, então se você acha que isso é melhor em outro lugar, me avise.

Felicidades,

Morgan

    
por Morgan Jones 20.12.2015 / 18:33

1 resposta

2

Caso alguém esteja interessado na resposta ...

Parece que a maneira de conseguir isso é com um ticket kerberos que pode ser enviado. O ticket pode então ser encaminhado usando o gssapi e no lado do servidor, o ticket pode ser usado com o comando ksu na questão para gerar um processo como dito usuário.

ksu kerbuser -c "/bin/bash authed-process.py"

Esse comando procurará no cache pelo ticket kerberos dos usuários e, em seguida, executará o processo. O gssapi cliente-servidor deve ser privilegiado, já que somente usuários privilegiados (root) podem visualizar o arquivo keytab.

    
por 04.01.2016 / 15:24