
Estou executando um pacote de automação residencial chamado HomeSeer em um servidor Ubuntu 15.04. Eu o configurei para ser executado com uma conta de serviço (chamada "_homeseer") e mudei o diretório do aplicativo para _homeseer:_homeseer.
Para instalar atualizações deste pacote, faço o download de um arquivo tar.gz e, em seguida, executo o script "update.sh" fornecido pelo fornecedor. Este script extrai o arquivo compactado, que também se sobrescreve (update.sh)... então estou pensando que não posso simplesmente alterar esse script, a menos que eu o copie para uma pasta separada em algum lugar.
Como parte do update.sh, há uma linha que chama "sudo update_extra.sh". Como estou executando update.sh como conta de serviço, esta linha sudo solicita a senha da conta de serviço... da qual não me lembro (nem acho que quero).
Não quero conceder a essa conta direitos sudo totais sem uma senha, pois seria um risco de segurança significativo (ou seja, o aplicativo executa um servidor web). Também estou um pouco cauteloso em conceder direitos sudo completos para executar o arquivo update_extra.sh como root, já que esse arquivo pode ser atualizado pela mesma conta de serviço.
Minha pergunta:
É possível configurar o sudo (ou seja, visudo) para que, se a conta _homeseer tentar usar o sudo, ela solicite a senha da minha conta pessoal e execute com os direitos sudo que possuo? Prefiro não definir uma senha de root se puder evitá-la... mas uma análise preliminar parece indicar que talvez não tenha muita escolha, se quiser seguir esse caminho.
Ou preciso modificar esse script update.sh, configurar permissões de grupo para que eu possa aplicar as atualizações como eu mesmo e depois fazer chown na conta de serviço?
Responder1
Você pode fazer com que o Sudo lide com isso.
Se você adicionar isto ao seu arquivo sudoers:
_homeseer hostname = (_homeseer) NOPASSWD: /path/to/update.sh
- nome de anfitrião= saída de
hostname
sua máquina.
Uma coisa a observar é que não existe uma maneira 100% segura de lidar com update.sh, pois ele pode conter qualquer comando, e presumo que isso mudará com o tempo, o que significa que você não pode usar uma função HASH para certifique-se de que o script seja o mesmo de antes.