É possível executar o pbuilder sem privilégios de root?

6

Eu percebo que a configuração de pbuilder requer privilégios de root, mas cada chamada realmente requer privilégios de root?

Existe alguma maneira de executar pbuilder como usuário padrão?

    
por Nathan Osman 23.07.2011 / 19:31

1 resposta

8

Sim, copiado de: pbuilder .

É possível usar o modo de usuário-linux invocando pbuilder-user-mode-linux em vez de pbuilder. O pbuilder-user-mode-linux não requer privilégios de root, e usa o método de acesso a disco copy-on-write (COW) do User-mode-linux, que normalmente torna muito mais rápido que o pbuilder tradicional.

User-mode-linux é uma plataforma menos comprovada que as ferramentas padrão do Unix nas quais o pbuilder confia (chroot, tar e gzip) mas madura o suficiente para suportar o pbuilder-user-mode-linux desde sua versão 0.59. E desde então, o pbuilder-user-mode-linux tem visto uma rápida evolução.

A configuração do pbuilder-user-mode-linux vai em três etapas:

  1. Configuração do modo de usuário- linux

    user-mode-linux não é completamente trivial de configurar. Provavelmente seria útil se familiarizar um pouco antes de tentar usar o rootstrap ou o pbuilder-user-mode-linux. Para detalhes, leia /usr/share/doc/uml-utilities/README.Debian e a documentação user-mode-linux . (Está em um pacote separado, user-mode-linux-doc .)

    user-mode-linux requer que o usuário esteja no grupo uml-net para configurar a rede, a menos que você esteja usando slirp.

    Se você compilar seu próprio kernel, você pode querer verificar se você habilitou o suporte a TUN / TAP, e você pode querer considerar o patch de SKAS.

  2. Configuração do rootstrap

    rootstrap é um wrapper em torno do debootstrap. Cria uma imagem de disco Debian para uso com a UML. Para configurar o rootstrap, existem vários requisitos.

    • Instale o pacote rootstrap.
    • Apenas TUN / TAP: adiciona o usuário ao grupo uml-net para permitir acesso à rede %código%
    • Apenas TUN / TAP: Verifique se o kernel suporta a interface TUN / TAP ou recompile o kernel, se necessário.
    • Configure adduser dancer uml-net . Por exemplo, se o host atual for 192.168.1.2, alterar as entradas a seguir para algo assim parece funcionar.

      transport=tuntap
      interface=eth0
      gateway=192.168.1.1
      mirror=http://192.168.1.2:8081/debian
      host=192.168.1.198
      uml=192.168.1.199
      netmask=255.255.255.0

    Alguma experimentação com a configuração e execução de rootstrap ~ / test.uml para realmente testá-lo seria útil.

    Usar slirp requer menos configuração. A configuração padrão vem com um exemplo funcional.

  3. Configuração do pbuilder-uml

    O seguinte precisa acontecer:

    • Instale o pacote /etc/rootstrap/rootstrap.conf .
    • Configure o arquivo de configuração pbuilder-uml da seguinte maneira. Será diferente para slirp.

      MY_ETH0=tuntap,,,192.168.1.198
      UML_IP=192.168.1.199
      UML_NETMASK=255.255.255.0
      UML_NETWORK=192.168.1.0
      UML_BROADCAST=255.255.255.255
      UML_GATEWAY=192.168.1.1
      PBUILDER_UML_IMAGE="/home/dancer/uml-image"
    • Ele precisa corresponder à configuração do rootstrap.

    • Certifique-se de que BUILDPLACE seja gravável pelo usuário. Altere BUILDPLACE no arquivo de configuração para um local onde o usuário tenha acesso.
    • Execute /etc/pbuilder/pbuilder-uml.conf para criar a imagem.
    • Tente executar o build pbuilder-user-mode-linux.

Comentários extras no link:

pbuilder-user-mode-linux create --distribution sid emula a maioria do pbuilder, mas existem algumas diferenças.

    O
  • pbuilder-user-mode-linux não suporta todas as opções do pbuilder corretamente ainda. Isso é um problema e será abordado à medida que áreas específicas forem descobertas.
  • / tmp é tratado de forma diferente dentro do pbuilder-user-mode-linux. No pbuilder-user-mode-linux, o / tmp é montado como tmpfs dentro da UML, portanto, o acesso aos arquivos em / tmp do modo de usuário externo-linux não funciona. Ela afeta opções como --configfile e ao tentar criar pacotes colocados em / tmp.

Para executar o pbuilder-user-mode-linux em paralelo em um sistema, há algumas coisas a serem lembradas.

  • Os métodos de criação e atualização não devem ser executados quando uma construção estiver em andamento ou o arquivo COW será invalidado.
  • Se você não estiver usando o slirp, os processos do modo de usuário-linux que estão sendo executados em paralelo precisam ter endereços IP diferentes. Apenas tentar executar o pbuilder-user-mode-linux várias vezes resultará em falha no acesso à rede. Mas algo como o seguinte funcionará:

não testado

    
por Rinzwind 23.07.2011 / 19:50