web-dev-qa-db-ja.com

root権限なしでpbuilderを実行することは可能ですか?

pbuilderの設定にはルート権限が必要ですが、各呼び出しには本当にルート権限が必要ですか?

pbuilderを標準ユーザーとして実行する方法はありますか?

6
Nathan Osman

はい、コピー元: pbuilder

Pbuilderの代わりにpbuilder-user-mode-linuxを呼び出すことにより、user-mode-linuxを使用することができます。 pbuilder-user-mode-linuxはroot権限を必要とせず、User-mode-linuxのコピーオンライト(COW)ディスクアクセス方法を使用します。これにより、通常、従来のpbuilderよりもはるかに高速になります。

User-mode-linuxは、pbuilderが依存する標準のUnixツール(chroot、tar、およびgzip)よりもやや実証されていないプラットフォームですが、バージョン0.59以降、pbuilder-user-mode-linuxをサポートするのに十分な成熟度を持っています。それ以来、pbuilder-user-mode-linuxは急速に進化しています。

Pbuilder-user-mode-linuxの設定は3つのステップで行われます:

  1. ser-mode-linuxの構成

    user-mode-linuxのセットアップは完全に簡単ではありません。 rootstrapまたはpbuilder-user-mode-linuxを使用する前に、少し知っておくと便利でしょう。詳細については、/usr/share/doc/uml-utilities/README.Debian そしてその user-mode-linux ドキュメンテーション。 (別のパッケージ、user-mode-linux-doc。)

    user-mode-linuxでは、slirpを使用していない限り、ネットワークを構成するためにユーザーがuml-netグループに属している必要があります。

    独自のカーネルをコンパイルする場合は、TUN/TAPサポートが有効になっていることを確認し、SKASパッチを検討することをお勧めします。

  2. ルートストラップの構成

    rootstrapは、debootstrapのラッパーです。 UMLで使用するDebianディスクイメージを作成します。ルートストラップを設定するには、いくつかの要件があります。

    • ルートストラップパッケージをインストールします。
    • TUN/TAPのみ:ユーザーをuml-netグループに追加して、ネットワークへのアクセスを許可しますadduser dancer uml-net
    • TUN/TAPのみ:カーネルがTUN/TAPインターフェースをサポートしていることを確認するか、必要に応じてカーネルを再コンパイルします。
    • セットアップ /etc/rootstrap/rootstrap.conf。たとえば、現在のホストが192.168.1.2の場合、次のエントリをこのようなものに変更すると動作するようです。

      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

    設定とrootstrap〜/ test.umlを実行して実際にテストするいくつかの実験が便利です。

    Slirpを使用すると、構成が少なくて済みます。デフォルトの構成には、実際の例が付属しています。

  3. pbuilder-umlの設定

    次のことが必要です。

    • pbuilder-uml パッケージ。
    • 構成ファイルをセットアップする/etc/pbuilder/pbuilder-uml.conf次の方法で。 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"
    • ルートストラップ構成と一致する必要があります。

    • BUILDPLACEがユーザーによって書き込み可能であることを確認してください。構成ファイルのBUILDPLACEを、ユーザーがアクセスできる場所に変更します。
    • 実行pbuilder-user-mode-linux create --distribution sid画像を作成します。
    • Pbuilder-user-mode-linuxビルドを実行してみてください。

リンク内の追加コメント:

pbuilder-user-mode-linuxはpbuilderのほとんどをエミュレートしますが、いくつかの違いがあります。

  • pbuilder-user-mode-linuxはまだpbuilderのすべてのオプションを適切にサポートしていません。これは問題であり、特定の領域が発見されると対処されます。
  • / tmpは、pbuilder-user-mode-linux内で異なる方法で処理されます。 pbuilder-user-mode-linuxでは、/ tmpはUML内でtmpfsとしてマウントされるため、user-mode-linuxの外部から/ tmpの下のファイルにアクセスすることはできません。 --configfileなどのオプション、および/ tmpに配置されたパッケージをビルドしようとするときに影響します。

システムでpbuilder-user-mode-linuxを並行して実行するには、いくつかの留意事項があります。

  • ビルドの進行中に作成および更新メソッドを実行しないでください。実行すると、COWファイルが無効になります。
  • Slirpを使用していない場合、並行して実行されているuser-mode-linuxプロセスには異なるIPアドレスが必要です。 pbuilder-user-mode-linuxを数回実行しようとすると、ネットワークへのアクセスに失敗します。しかし、次のようなものが機能します:

未検証

8
Rinzwind