Permitir que usuários não administradores instalem pacotes via apt ou rpm?

13

É possível permitir que usuários não root instalem pacotes em todo o sistema usando apt ou rpm?

O local em que trabalho atualmente tem uma configuração desatualizada nas caixas Linux, e os administradores estão cansados ​​de ter que fazer todas as instalações para os usuários quando solicitados, portanto, eles estão pensando em conceder direitos sudo completos a todos os usuários. Isso tem desvantagens óbvias de segurança. Então, eu estou querendo saber se existe uma maneira de permitir que usuários normais instalem software - e para atualizar e removê-lo?

naught101
fonte
4
Se você concede privilégios para instalar pacotes, basicamente concede direitos de administrador completos, já que um usuário pode instalar um pacote com um shell raiz setuid.
Camh
@camh hrm .. você poderia ter um repositório verificado, e não permitir que os usuários adicionassem novos repositórios, não? Ou o apt permite que você instale pacotes a partir de arquivos .deb? Eu percebo um repo vetado provavelmente seria mais trabalho a longo prazo, esta é mais uma questão conceitual :)
naught101
1
apt-secure(8)diz: "O apt-get atualmente avisa apenas sobre arquivos não assinados, versões futuras podem forçar a verificação de todas as fontes antes de baixar pacotes". Dependendo da sofisticação de um ataque, pode ser possível seqüestrar a conexão com a fonte do repositório e injetar um pacote não confiável. No entanto, leia essa página de manual para obter mais detalhes. Você pode ter uma solução suficientemente segura para o seu modelo de encadeamento.
Camh
Relacionado: Sistema de gerenciamento de pacotes local do usuário
Piotr Dobrogost 25/02
1
Relacionados: -root não gerenciadores de pacotes
Piotr Dobrogost

Respostas:

21

Você pode especificar os comandos permitidos com o sudo, não precisa permitir acesso ilimitado, por exemplo

username ALL = NOPASSWD : /usr/bin/apt-get , /usr/bin/aptitude

Isso permitiria que o nome de usuário fosse executado sudo apt-gete sudo aptitudesem nenhuma senha, mas não permitiria nenhum outro comando.

Você também pode usar o packagekit combinado com o PolicyKit para obter um nível de controle mais refinado que o sudo.

Permitir que os usuários instalem / removem pacotes pode ser um risco. Eles podem facilmente tornar um sistema não funcional apenas desinstalando o software necessário como libc6, dpkg, rpm etc. A instalação de software arbitrário a partir dos arquivos definidos pode permitir que os invasores instalem software desatualizado ou explorável e obtenham acesso root. A principal questão na minha opinião é quanto você confia em seus funcionários?

É claro que sua equipe de administradores também pode começar a usar um sistema de gerenciamento de configuração, como fantoche, chef ou procurar na caminhada espacial para gerenciar seu sistema. Isso permitiria configurar e gerenciar o sistema a partir de um sistema central.

Ulrich Dangel
fonte
Deixei de fora da minha pergunta, mas você tem algum comentário sobre a redução de segurança implícita ao permitir isso? Quero dizer, você não pode alterar os repositórios de pacotes, portanto, provavelmente não terá acesso total ao sudo, mas pode gravar em qualquer arquivo usando o aptitude (opções> preferências> "Arquivo para efetuar ações"), o que poderia causar alguns danos sérios. Estou menos certo sobre o PolicyKit ...
naught101
1
@ naught101 ok eu adicionei alguns comentários sobre segurança. JFTR como policykit não fornecerá acesso root seria menos problemático do que usar sudo
Ulrich Dangel
Existem maneiras de executar um shell a partir do dpkg ou rpm. Por exemplo: o dpkg será solicitado quando houver uma alteração no arquivo de configuração que entre em conflito, com uma das opções iniciando um shell para examinar a situação . Isso iniciará um shell como root se for executado via sudo. Da mesma forma, se você pode executar um editor a partir da ferramenta, como a maioria dos editores permite executar comandos shell arbitrários a partir deles (por exemplo, comando! No vi).
David Gardner
@ naught101 Gostaria de testar a escalação de privilégios por meio de um RPM que contém um shell SUID, conforme este blog descreve: nosedookie.blogspot.com/2011/07/… Em um cenário de injeção de shell, no entanto, onde a conta do sudoer está comprometida, é possível mitigar escalação de privilégios via sudo, exigindo que uma senha seja inserida, em oposição ao NOPASSWD.
19416 Matt
7

aptdcon

Nas páginas do manual:

aptdcon: permite executar tarefas de gerenciamento de pacotes, por exemplo, instalar ou remover software, usando o aptdaemon. Não há necessidade de ser root para executar este programa.

pl1nk
fonte
1
Embora você não precise de privilégios root / sudo para executar o aptdcon, ele inicia imediatamente uma caixa de diálogo de autenticação para usuários sem privilégios - acabei de testar no Ubuntu. Se você não é um usuário privilegiado / autorizado, isso não adiciona / remove pacotes.
sáb
1
Não funciona em operaçõesERROR: You are not allowed to perform this action. ('system-bus-name', {'name': ':1.716'}): org.debian.apt.install-or-remove-packages
JacopKane
4
username ALL = NOPASSWD : /usr/bin/yum, /bin/rpm
fromnaboo
fonte
1

Também procurei algo assim, mas nada apareceu, então codifiquei essa solução fácil "softwarechannels":

https://github.com/alfem/softwarechannels

É um sistema muito simples para permitir que usuários comuns (sem administrador) 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