Existe um gksudo de desktop neutro?

11

Existem várias ferramentas para vários desktops que visam executar um aplicativo gráfico como root. gksudo , kdesudo , empower , etc ...

Mas e se eu estiver escrevendo um script que possa ser usado em qualquer desktop Linux? Existe um xdg-sudo de algum tipo ..? Um padrão para obter acesso sudo em um ambiente de área de trabalho?

    
por Oli 09.02.2013 / 02:13

3 respostas

9

Após a sugestão de @Tachyons, pesquisei MUITO sobre pkexec e é incrível !

  • É parte do PolicyKit , um pacote amplamente usado.
  • Hospedado e patrocinado por freedesktop.org
  • Padrão no Gnome , Unidade , MATE , Canela , KDE , LXDE e XFCE e possivelmente outros
  • Funciona via D-Bus, por isso é completamente neutro em relação a desktops, com um protocolo bem definido.
  • Em muitos DEs, ele é usado em vários serviços como tela de login, shutdown / restart, gerenciamento de disco (udisks / automount) e assim por diante.

Então, sim, ele atende a todos os requisitos e eu acho que é a coisa mais próxima que um "gksudo universal" pode ser.

Dito isso, pkexec é o front end de linha de comando do PolicyKit. Existem 2 modos básicos de operação:

  • Basta executá-lo como você faria com sudo , e você terá uma boa solicitação de GUI:

    $ pkexec rm -rf /

  • Ou crie um arquivo de autorização do PolicyKit para seu aplicativo, solte-o em /usr/share/polkit-1/rules.d e ele permitirá muitas opções de personalização e segurança, por exemplo, acesso root apenas para determinadas ações, sem necessidade de senha para outras pessoas , acesso limitado a determinados caminhos, etc. Você pode ajustar suas configurações com incrível granularidade.
por MestreLion 02.05.2013 / 14:15
5

Uma maneira mais geral seria escrever um "programa auxiliar". Tal programa solicitaria ao usuário uma senha; se você tiver certeza de que, digamos, o Zenity, está instalado, você pode usar isso, senão você precisará escrever o programa auxiliar em Python ou algo mais que possa interagir com a GUI.

Leia o manual sudo para as opções -A ("askpass") e -S (stdin).

E lembre-se de que quando você executa sudo do seu script, você precisa da opção -H (home) para simular gksudo .

Este método funciona bem, mas você precisa testar o programa auxiliar completamente para garantir que ele esteja livre de bugs.

    
por Paddy Landau 09.02.2013 / 02:58
4

Não, não há nenhuma maneira padrão de obter privilégios de root (ou de qualquer outro usuário).

Se você quiser ser compatível com o máximo de sistemas possível, não assuma nada, mas diga ao usuário que ele precisa executar seu script como um usuário específico. Então, cabe ao usuário / administrador configurar o sistema para que seu script seja executado de maneira apropriada.

Fazer algumas sugestões de como usar os sistemas de autenticação mais comuns, como su, sudo e ConsoleKit, seria bom.

    
por Florian Diesch 09.02.2013 / 02:34

Tags