Como posso configurar o Centro de Software para instalar software para usuários não-root?

46

Como posso configurar o Centro de Software para permitir que usuários não-root instalem coisas dos repositórios do Ubuntu sem precisar digitar sua senha?

Estou totalmente ciente das implicações de segurança e estou disposto a assumir o risco. O Fedora 12 é enviado com algo assim. (Modificando a configuração do PolicyKit, acredito)

    
por snostorm 28.07.2010 / 21:21

4 respostas

36

Você pode modificar as permissões do PolicyKit para permitir que os usuários acessem o backend do aptdaemon que o Software Center usa.

dpkg --listfiles aptdaemon mostra que /usr/share/polkit-1/actions/org.debian.apt.policy é o arquivo que especifica as ações possíveis no backend do aptdaemon.

Examinando esse arquivo, as tags < action id=""> especificam as ações possíveis. Você provavelmente desejaria que org.debian.apt.install-packages permitisse que os usuários instalassem novos pacotes do arquivo e org.debian.apt.update-cache para permitir que os usuários atualizassem as listas de pacotes.

Veja man pklocalauthority , que documenta como definir permissões locais nas ações do PolicyKit. Colocar o seguinte em /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pkla permitirá que qualquer usuário logado na máquina local instale pacotes depois de digitar sua própria senha (mesmo quando eles não estiverem no grupo admin) e atualizar o cache de pacotes sem digitar nenhuma senha.

[Untrusted Install]
Action=org.debian.apt.install-or-remove-packages
ResultyAny=no
ResultInactive=no
ResultActive=auth_self

[Untrusted Update]
Action=org.debian.apt.update-cache
ResultAny=no
ResultInactive=no
ResultActive=yes
    
por RAOF 29.07.2010 / 04:37
10

Eu não acho que atualmente é possível fazer isso através da GUI, mas o seguinte deve funcionar, embora seja um pouco desajeitado. YMMV.

Adicione a seguinte linha ao / etc / sudoers (use sudo visudo para editar o arquivo):

%packageinstallers ALL = NOPASSWD: /usr/bin/software-center /usr/bin/apt-get

Você só precisa criar e adicionar usuários específicos ao grupo packageinstallers :

$ sudo addgroup packageinstallers
$ sudo adduser jdoe packageinstallers

Agora, jdoe pode fazer o seguinte:

$ sudo apt-get install <some-package>

e você pode editar o item de menu da área de trabalho para o Centro de Software para que ele chame software-center , prefixando o comando com gksudo .

PolicyKit pode permitir que você o faça sem sudo, mas está além do meu entendimento neste momento.

    
por lfaraone 28.07.2010 / 21:45
5

A resposta do RAOF se aplica apenas ao Ubuntu. O Kubuntu usa o QAptWorker como backend (observado para Natty e Oneiric). Para permitir instalações não-raiz, crie /etc/polkit-1/localauthority/50-local.d/10-allow-non-root-install-packages.pkla contendo:

[Update Software Sources]
Action=org.kubuntu.qaptworker.updateCache
ResultAny=no
ResultInactive=no
ResultActive=yes

[Install Software]
Action=org.kubuntu.qaptworker.commitChanges
ResultAny=no
ResultInactive=no
ResultActive=auth_self

Eu queria permitir que alguns usuários não administradores instalassem software sem conceder acesso direto ao sudo. Isso foi realizado inserindo as próximas linhas em ambos os grupos de configuração:

Identity=unix-user:some-non-admin-user

Se houver um grupo que deve receber permissão, use unix-group em vez de unix-user .

    
por Lekensteyn 13.11.2011 / 14:48
5

Se você precisar apenas de uma permissão genérica para permitir / proibir a instalação de pacotes, vá para PolicyKit.

Infelizmente, o PolicyKit não tem um bom controle sobre o pacote a ser instalado. Se você quiser dar aos seus usuários permissão para instalar apenas um conjunto restrito de aplicativos, você deve usar sudo e instalar algo como softwarechannels ...

Eu também procurei algo assim, mas como não encontrei nada, codifiquei esta solução fácil "softwarechannels", disponível aqui em GitHub

É um sistema muito simples para permitir que usuários comuns (não administradores) instalem pacotes de catálogos restritos.

Basta definir 'canais' (grupos de pacotes) em um arquivo de texto simples e conceder aos usuários permissões para iniciar softwarechannels.

Eles só verão pacotes em canais correspondentes a seus grupos unix.

    
por Alfonso E.M. 20.02.2013 / 11:44