Segurança do xhost (local) e sudo xauthority forwarding

4

Contexto: inicie uma aplicação GUI como um serviço linux. Eu considerei fazer um daemon sem cabeça com um front-end de GUI, mas há muito código envolvido para fazer isso agora. Este serviço deve iniciar no login do usuário, ele deve ser iniciado no shell do usuário (os direitos de arquivo são importantes aqui). Nenhuma interação do root deve ser necessária (instalação automática a partir de um RPM). Além disso, o sistema (root) deve poder iniciar e parar este serviço para executar tarefas de manutenção chamadas pelo cron.

Eu consegui fazer isso até agora, mas tenho uma pergunta de segurança sobre isso: o seguinte quebra alguma segurança do servidor X uma vez que o usuário 'username' está logado?

  1. .xinitrc criado em '/ home / username', chamando xhost antes de iniciar o gerenciador de janelas

    xhost + local:username
    exec $WINDOWMANAGER
    
  2. '/ etc / sudoers' modificado com um editor personalizado para adicionar essas linhas

    username localhost = NOPASSWD: /etc/init.d/my-daemon
    Defaults env_keep += "DISPLAY XAUTHORITY"
    
  3. script de serviço '/etc/init.d/my-daemon'

    #!/bin/bash
    DISPLAY=${DISPLAY:-:0.0}
    export DISPLAY=$DISPLAY
    gnomesu -u username -c 'my-gui-app-bin with-some-arguments'
    
  4. O serviço my-daemon não inicia em nenhum nível (o DISPLAY não está pronto, mesmo no nível 5)

    chkconfig --del my-daemon
    
  5. autostart do deamon através de um arquivo .desktop em '/ etc / xdg / autostart /' e o seguinte script

    #!/bin/bash
    sudo /etc/init.d/my-daemon start
    
por vrince 20.07.2011 / 20:19

0 respostas