it-swarm-pt.tech

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

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

Estou plenamente 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)

47
snostorm

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.

Olhando nesse arquivo, as tags < action id=""> especificam as possíveis ações. Você provavelmente desejará que org.debian.apt.install-packages permita que os usuários instalem novos pacotes do arquivo, e org.debian.apt.update-cache para permitir que os usuários atualizem 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
36
RAOF

Eu não acho que atualmente é possível fazê-lo através da GUI, mas o seguinte deve funcionar, apesar de ser 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

Então 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, inserindo o comando com gksudo.

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

10
lfaraone

Se você precisa apenas de uma permissão genérica para permitir/não permitir 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 por algo assim, mas como não encontrei nada, codifiquei esta solução fácil "softwarechannels", disponível aqui no GitHub

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

Apenas defina 'canais' (grupos de pacotes) em um arquivo de texto simples e dê aos usuários permissões para iniciar softwarechannels.

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

5
Alfonso E.M.

resposta do RAOF aplica-se 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 enquanto não concediam acesso ao Sudo diretamente. 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.

5
Lekensteyn