web-dev-qa-db-fra.com

Est-il possible d'exécuter pbuilder sans les privilèges root?

Je réalise que la configuration de pbuilder requiert des privilèges root, mais chaque appel nécessite-t-il vraiment des privilèges root?

Est-il possible d'utiliser pbuilder en tant qu'utilisateur standard?

6
Nathan Osman

Oui, copié de: constructeur .

Il est possible d'utiliser user-mode-linux en appelant pbuilder-user-mode-linux au lieu de pbuilder. pbuilder-user-mode-linux ne nécessite pas de privilèges root et utilise la méthode d'accès au disque Copy-on-write (COW) de User-mode-linux, qui le rend généralement beaucoup plus rapide que le constructeur traditionnel.

User-mode-linux est une plate-forme un peu moins éprouvée que les outils Unix standard sur lesquels pbuilder s'appuie (chroot, tar et gzip) mais suffisamment mature pour prendre en charge pbuilder-user-mode-linux depuis sa version 0.59. Et depuis lors, pbuilder-user-mode-linux a connu une évolution rapide.

La configuration de pbuilder-user-mode-linux se fait en trois étapes:

  1. Configuration de user-mode-linux

    user-mode-linux n'est pas complètement trivial à configurer. Il serait probablement utile d’en prendre connaissance un peu avant de tenter d’utiliser rootstrap ou pbuilder-user-mode-linux. Pour plus de détails, lisez /usr/share/doc/uml-utilities/README.Debian et la documentation user-mode-linux. (C'est dans un paquet séparé, user-mode-linux-doc.)

    user-mode-linux exige que l'utilisateur soit dans le groupe uml-net pour pouvoir configurer le réseau, sauf si vous utilisez slirp.

    Si vous compilez votre propre noyau, vous voudrez peut-être vérifier que vous activez la prise en charge de TUN/TAP et vous voudrez peut-être envisager le correctif SKAS.

  2. Configuration de rootstrap

    rootstrap est un wrapper autour de debootstrap. Il crée une image disque Debian à utiliser avec UML. Pour configurer rootstrap, il existe plusieurs exigences.

    • Installez le paquet rootstrap.
    • TUN/TAP uniquement: ajoutez l'utilisateur au groupe uml-net pour permettre l'accès au réseau adduser dancer uml-net
    • TUN/TAP uniquement: vérifiez que le noyau prend en charge l'interface TUN/TAP ou recompilez-le si nécessaire.
    • Configurez /etc/rootstrap/rootstrap.conf. Par exemple, si l'hôte actuel est 192.168.1.2, modifier les entrées suivantes en quelque chose comme cela semble fonctionner.

      transport = tuntap 
       interface = eth0 
       passerelle = 192.168.1.1 
       miroir = http: //192.168.1.2: 8081/debian 
       Hôte = 192.168.1.198 
       uml = 192.168.1.199 
       masque de réseau = 255.255.255.0

    Des expériences de configuration et d’exécution de rootstrap ~/test.uml pour le tester seraient pratiques.

    L'utilisation de slirp nécessite moins de configuration. La configuration par défaut est fournie avec un exemple de travail.

  3. Configuration de pbuilder-uml

    Ce qui suit doit arriver:

    • Installez le package pbuilder-uml.
    • Configurez le fichier de configuration /etc/pbuilder/pbuilder-uml.conf de la manière suivante. Ce sera différent pour 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"
    • Il doit correspondre à la configuration de rootstrap.

    • Assurez-vous que BUILDPLACE est accessible en écriture pour l'utilisateur. Remplacez BUILDPLACE dans le fichier de configuration par un emplacement accessible à l'utilisateur.
    • Exécutez pbuilder-user-mode-linux create --distribution sid pour créer l'image.
    • Essayez d’exécuter pbuilder-user-mode-linux.

Commentaires supplémentaires dans le lien:

pbuilder-user-mode-linux émule la plupart de pbuilder, mais il existe quelques différences.

  • pbuilder-user-mode-linux ne supporte pas encore correctement toutes les options de pbuilder. Ceci est un problème, et sera résolu à mesure que des zones spécifiques seront découvertes.
  • / tmp est géré différemment dans pbuilder-user-mode-linux. Dans pbuilder-user-mode-linux,/tmp est monté en tant que tmpfs dans UML. Par conséquent, l'accès aux fichiers sous/tmp depuis l'extérieur de user-mode-linux ne fonctionne pas. Cela affecte des options comme --configfile et lors de la tentative de construction de paquetages placés sous/tmp.

Pour exécuter pbuilder-user-mode-linux en parallèle sur un système, il convient de garder quelques points à l’esprit.

  • Les méthodes create et update ne doivent pas être exécutées lorsqu'une construction est en cours, sinon le fichier COW sera invalidé.
  • Si vous n'utilisez pas slirp, les processus utilisateur en mode utilisateur qui s'exécutent en parallèle doivent avoir des adresses IP différentes. Si vous essayez plusieurs fois de lancer pbuilder-user-mode-linux, vous ne pourrez pas accéder au réseau. Mais quelque chose comme ce qui suit va marcher:

non testé

8
Rinzwind