Mais uma alternativa são as dicas do Linux From Scratch :
Mais controle e gerenciamento de pacotes usando usuários de pacotes
3 Usuários do Pacote
3.1 Introdução
A idéia básica desse esquema é facilmente explicada. Todo pacote pertence a um determinado "usuário do pacote". Ao instalar um pacote, você cria e instala o pacote como usuário do pacote, fazendo com que todos os arquivos instalados sejam de propriedade do usuário do pacote. Como conseqüência, todas as tarefas usuais de gerenciamento de pacotes podem ser realizadas confortavelmente através do uso de utilitários de linha de comando padrão. Um simples ls -l <file>
dirá a você, por exemplo, a que pacote
<file>
pertence e um find -user ...
comando permite que você execute uma operação em todos os arquivos pertencentes a um determinado pacote, por exemplo, exclua-os para desinstalar o pacote.
Mas o gerenciamento de pacotes não é para isso que os usuários são bons. Como os usuários do pacote não têm direitos de root, a instalação de um pacote é limitada no que ele pode fazer. Uma coisa que um usuário de pacote não tem permissão para fazer, por exemplo, é sobrescrever arquivos de um usuário de pacote diferente. Conflitos entre pacotes diferentes que desejam instalar um arquivo binário, de biblioteca ou de cabeçalho com o mesmo nome são mais comuns do que você imagina. Com os usuários do pacote, você nunca corre o risco de a instalação do pacote B destruir arquivos do pacote A silenciosamente, sem você perceber. Toda tentativa de fazer isso durante a instalação do pacote B causará um erro "Permissão negada" ou "Operação não permitida", para que você tenha a chance de tomar as medidas apropriadas. Outra coisa que os usuários do pacote não podem fazer é instalar binários raiz setuid. A decisão de fazer uma raiz setuid binária também é algo que um administrador prudente não deseja deixar para o criador de um pacote de software.
Geralmente, as contas de usuário do pacote não têm senha válida, de modo que somente o su
usuário root pode fazer o root , o que garante que os usuários do pacote não abram uma maneira adicional no sistema e prejudiquem a segurança. Mas você pode definir senhas de qualquer maneira para permitir que um co-administrador que você deseja instalar e manter determinados pacotes de software o faça sem ter acesso à conta raiz real. Este co-administrador pode, por exemplo, instalar, excluir, alterar bibliotecas adicionais que possam ser necessárias para o seu grupo de trabalho. Ele não seria capaz de remover ou modificar bibliotecas que não lhe pertencem, como libc.
Após essa primeira sugestão, encontrei uma variante evoluída:
crablfs - Sistema de gerenciamento de pacotes baseado no usuário
Este crablfs
é o exemplo mais recente de gerenciamento de pacotes usando uids e gids exclusivos para gerenciamento de pacotes, mas no sourceforge está evoluindo novamente nos ulfs:
uLFS: seu Linux gerenciável e reutilizável do zero
Para usuários causais de pacotes instalados, acho que a solução LFS de "usuários de pacotes" é leve, menos invasiva e elegante. Em resumo, você instala pacotes /usr/local
ou /home/user/local
rastreia arquivos usando uids e gids exclusivos para cada pacote, mas coloca todos os arquivos nos locais tradicionais, diretórios comuns /usr/local/bin
, /usr/local/lib
como em todas as distribuições principais do Linux ... oclusão de arquivos e substituição ou exclusão indesejada de arquivos é evitado por um truque simples do Linux, explicado por Matthias S. Benkmann em more_control_and_pkg_man.txt, que precisa apenas da manipulação normal de permissões de arquivos e diretórios, por exemplo, a permissão de bits persistentes para diretórios para evitar sobrescrições indesejadas de arquivos:
3.3 Grupos
Cada usuário do pacote pertence a pelo menos 2 grupos. Um desses grupos é o grupo "install", ao qual todos os usuários do pacote (e apenas os usuários do pacote) pertencem. Todos os diretórios nos quais os pacotes têm permissão para instalar itens pertencem ao grupo de instalação. Isso inclui diretórios como / bin e / usr / bin, mas exclui diretórios como / root ou /. Os diretórios pertencentes ao grupo de instalação são sempre graváveis em grupo. Isso seria suficiente para os aspectos de gerenciamento de pacotes, mas sem preparação adicional, isso não daria segurança ou controle adicional, pois cada pacote poderia substituir os arquivos de um pacote diferente (a alteração seria visível na saída dels -l
, Apesar). Por esse motivo, todos os diretórios de instalação obtêm o atributo adesivo. Isso permite que os usuários criem novos arquivos e excluam ou modifiquem seus próprios arquivos no diretório, mas os arquivos de outros usuários não podem ser modificados ou removidos. No restante desta dica, sempre que o termo "diretório de instalação" for usado, ele se refere a um diretório que pertence à instalação do grupo, é gravável e persistente. IOW, para se transformar <dir>
em um diretório de instalação, você faria
instalação do chgrp && chmod g + w, o + t
Para mim, parece uma solução simples e inteligente! Eu usei esse esquema na minha compilação LFS e é uma solução funcional ...