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

47

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

Estou ciente das implicações de segurança e estou disposto a correr o risco. O Fedora 12 foi enviado com algo parecido com isto. (Ao modificar a configuração do PolicyKit, acredito)

tempestade de neve
fonte
5
É importante notar que o Fedora também desistiu depois que o céu caiu sobre eles.
Nicholas Knight
Sim, eu lembro disso. Realmente só faz sentido em computadores de mesa com apenas um ou dois usuários.
30910 snostorm
Lembre-se de que alguns softwares do mercado de aplicativos, como o Software Center, permitem alterar os repositórios do sistema. Um autoatendimento de pacotes é arriscado, mas os usuários que adicionam fontes de pacotes não confiáveis ​​são realmente perigosos.
Alfonso EM

Respostas:

36

Você pode modificar as permissões do PolicyKit para permitir que os usuários acessem o back-end do aptdaemon usado pelo Software Center.

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

Procurando nesse arquivo, as < action id="">tags especificam as ações possíveis. Você provavelmente deseja org.debian.apt.install-packagespermitir que os usuários instalem novos pacotes do arquivo morto e org.debian.apt.update-cacheatualize as listas de pacotes.

Veja man pklocalauthorityquais documentos como definir permissões locais nas ações do PolicyKit. A inserção do seguinte /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pklapermitirá que qualquer usuário conectado à máquina local instale pacotes após digitar sua própria senha (mesmo quando não estiver no grupo de administradores) e atualize o cache do pacote 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
RAOF
fonte
As políticas do Kubuntu (pelo menos em Natty e Oneiric) estão em:/usr/share/polkit-1/actions/org.kubuntu.qaptworker.policy
Lekensteyn
As instruções para o Kubuntu podem ser encontradas na minha resposta
Lekensteyn
Poupança de vida - felicidades companheiro! Eu tive que adicionar Identity=*para que isso funcionasse, adaptado de askubuntu.com/a/123260 . Além disso, existe alguma maneira de obter mais saída de log do kit de políticas, por exemplo /var/log/auth.log(ou qualquer outro arquivo de log)? Eu só recebem authentication failsmensagens, mas nenhuma razão para que ele falhou ...
SSC
10

Atualmente, não acho que seja possível fazê-lo através da GUI, mas o seguinte deve funcionar, embora seja um pouco arrogante. YMMV.

Adicione a seguinte linha ao / etc / sudoers (use sudo visudopara 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 packageinstallersgrupo:

$ sudo addgroup packageinstallers
$ sudo adduser jdoe packageinstallers

Agora jdoepode fazer o seguinte:

$ sudo apt-get install <some-package>

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

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

lfaraone
fonte
Isso permite que eles instalem a partir do Synaptic ou aptitude, ou apenas apt-get?
30910 snostorm
Se você adicionasse "/ usr / bin / synaptic" à lista, seria. De fato, você provavelmente poderia adicionar "/ usr / bin / software-center" à lista e funcionaria. Ainda não testei isso, deixe-me saber se funciona e eu atualizarei a resposta.
Lfaraone 28/07/10
Eu vou tentar isso. :)
snostorm
Isso exigiria que os usuários saibam executar o software center com o sudo ou que você modifique o arquivo .desktop. Veja minha resposta sobre como ajustar o PolicyKit para fazer o que você deseja.
RAOF 29/07
Concordou que seria uma solução superior.
Lfaraone 29/07
5

A resposta do RAOF se aplica apenas ao Ubuntu. O Kubuntu usa o QAptWorker como back-end (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.pklacontendo:

[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 o software sem conceder diretamente o acesso ao sudo. Isso foi realizado inserindo as próximas linhas nos dois grupos de configuração:

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

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

Lekensteyn
fonte
Para reaplicar as regras, eu reiniciei. (a re-login provavelmente funcionaria também)
Lekensteyn
Como você deve fazer isso? Mesmo depois de sudo -ieu nem ter acesso ao /etc/polkit-1/localauthority(Ubuntu 17.10): "Não tentarei processar o diretório / etc / polkit-1 /
localauthority
5

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

Infelizmente, o PolicyKit não tem controle fino sobre o pacote para instalar. Se você deseja dar aos usuários permissão para instalar apenas um conjunto restrito de aplicativos, use sudoe instale algo como softwarechannels ...

Também procurei algo assim, mas como não encontrei nada, codifiquei essa 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.

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

Eles verão apenas pacotes nos canais correspondentes aos seus grupos unix.

Alfonso EM
fonte