Quanto a restringir os privilégios de gerenciamento para apenas instalar software, você pode usar o sudo: você só permite que o usuário execute as ferramentas de gerenciamento de pacotes que estão instalando. Aproximadamente você precisa de algo assim em / etc / sudoers:
Cmnd_Alias SWINST = /path/to/pkg-manager install_action *
power_user hostname= NOPASSWD: SWINST
Isso permite que power_user
no computador hostname
execute o /path/to/pkg-manager
com o primeiro argumento install_action
e argumentos adicionais arbitrários, sem que seja solicitada uma senha (por exemplo, para o Debian isso seria traduzido para /path/to/apt-get install *
, para SUSE distribuições baseadas em /path/to/zypper in *
).
Há duas coisas a serem lembradas:
-
O gerenciador de pacotes deve ser bem comportado no sentido de que não deve permitir que várias ações sejam passadas para ele em uma linha de comando (por exemplo,
pkg-manager install foo, remove bar
o quebraria completamente) ). Como os gerenciadores de pacotes também lidam com conflitos, mesmo a instalação pode resultar na remoção de software, use switch / configuration que desativa isso, se possível (e veja o comentário de Craig abaixo). -
Você não deve permitir o acesso a comandos de manutenção de pacote de baixo nível, que podem instalar o pacote a partir de um arquivo local. Isso permitiria ao usuário preparar um pacote de escalonamento de privilégios, instalá-lo e depois dar adeus ao seu sistema. Em vez disso, você precisa se certificar de que só será possível instalar um software confiável com o comando.
Para sistemas desktop, a infraestrutura do PolicyKit é frequentemente usada nos dias de hoje, por isso seria outra opção.