Como iniciar um serviço root a partir de uma GUI

2

Então eu entendo que executar uma aplicação GUI como root em um ambiente Linux é uma Idéia Ruim, e a sabedoria predominante parece ser que é melhor rodar tal serviço tendo processos separados: um processo de interface gráfica e um background, daemon com privilégios de root que faz o trabalho real.

Estou criando um programa direcionado a usuários de ambientes de trabalho não-técnicos e de desktop de ambientes Linux. Eu não quero exigir que eles abram a linha de comando e executem um comando para iniciar meu programa. Eles devem ser capazes de clicar no item de menu (ou um arquivo .desktop) e simplesmente ter este programa funcionando. Portanto, o programa GUI precisa iniciar o processo raiz ou vice-versa. Eles precisarão, é claro, inserir a senha do administrador, mas não tenho certeza de como permitir isso de maneira segura e de distribuição.

Este é um programa de backup, portanto, ele precisa particionar a unidade de destino para duplicar as partições na unidade de origem, o que requer permissões de root. Após essa etapa, basta montar e desmontar as partições para copiar os arquivos da unidade de origem para o destino. O programa seria instalado através de um gerenciador de pacotes, presumivelmente com permissões administrativas pelo menos para a instalação inicial.

Como posso de forma segura permitir que um programa GUI execute um daemon com privilégios de root?

Nota: Se for importante, a linguagem que estou usando é o Python 3.

    
por DonyorM 06.08.2018 / 23:37

2 respostas

1

Simples - você separa totalmente o programa em 2 partes.

Primeiro, seu servidor / serviço e seu daemon. Isso deve ser instalado autônomo e integrar em qualquer gerenciador de processos que o host utilize - systemd, upstart, initd, etc

Então você tem seu programa GUI. Configure-o para conectar-se via rede na máquina local (usando loopbacks) ou um host remoto executando o daemon.

Para um exemplo disso, veja o servidor mysql e o mysql-workbench. Dois aplicativos totalmente separados, uma GUI e nenhum root necessário, um serviço e root possivelmente necessários.

    
por 10.08.2018 / 19:53
0

Se você precisar iniciar um trabalho privilegiado de root, poderá usar o "sudo". Ele pode ser configurado para dizer "um userid específico executando o processo da GUI pode executar um certo comando root, com estes parâmetros".

    
por 11.08.2018 / 14:37