xbps-uchroot
xbps-uchroot adalah utilitas XBPS untuk melakukan chroot dan bind mount menggunakan Linux namespaces. Terutama digunakan oleh xbps-src sebagai backend environment build yang terisolasi.
Fungsi Utama
| Fungsi | Penjelasan |
|---|---|
| Chroot ke direktori target | Berpindah ke lingkungan root yang terisolasi |
| Bind mount pseudo-filesystem | Auto-mount /dev, /dev/shm, /proc, dan /sys ke dalam chroot |
| Bind mount direktori kustom | Pasang direktori dari host ke dalam chroot (opsional) |
| Isolasi via namespaces | Pisahkan IPC, PID, dan mount points dari proses pemanggil |
Penggunaan
xbps-uchroot [OPSI] CHROOTDIR [CMD] [ARGS]
Opsi
| Flag | Keterangan |
|---|---|
-b src:dest | Bind mount src ke CHROOTDIR/dest (read-write) |
-B src:dest | Bind mount src ke CHROOTDIR/dest (read-only) |
-O | Buat overlay layer sementara — perubahan tidak disimpan ke CHROOTDIR (butuh overlayfs) |
-t | Mount temporary dir di tmpfs (RAM) — hanya berguna bersama -O |
-o opts | Argumen tambahan untuk mount tmpfs — hanya bersama -O dan -t |
Contoh Penggunaan
Chroot sederhana dengan auto-mount /proc, /sys, /dev:
xbps-uchroot /mnt/void /bin/bash
Bind mount direktori host ke dalam chroot:
xbps-uchroot -b /home/user:/home/user /mnt/void /bin/bash
Overlay sementara — perubahan tidak disimpan ke CHROOTDIR:
xbps-uchroot -O /mnt/void /bin/bash
Aktifkan xbps-uchroot sebagai backend xbps-src:
cd void-packages
echo XBPS_CHROOT_CMD=uchroot >> etc/conf
Keamanan dan Izin
| Persyaratan | Penjelasan |
|---|---|
| setuid/setgid | Binary harus memiliki bit setuid untuk berfungsi |
| Group khusus | Hanya anggota grup xbuilder yang dapat menjalankannya |
| Izin file | chmod 4750, kepemilikan root:xbuilder |
Di T4n OS, konfigurasi ini sudah diatur secara default. Cek dengan:
ls -la /usr/bin/xbps-uchroot
# Output: -rwsr-x--- ... root xbuilder ...
Bit yang digunakan adalah setuid (mode
spada posisi owner), bukan setgid. Ini yang memberikan eskalasi privilege sementara saat dieksekusi.
Prasyarat Kernel
| Opsi Kernel | Fungsi |
|---|---|
CONFIG_NAMESPACES | Dukungan namespace secara umum |
CONFIG_IPC_NS | Isolasi IPC (Inter-Process Communication) |
CONFIG_PID_NS | Isolasi process ID |
CONFIG_UTS_NS | Isolasi hostname/domainname |
CONFIG_OVERLAY_FS | Diperlukan untuk opsi -O (overlay) |
Kernel Void Linux default sudah mengaktifkan semua opsi ini.
Perbandingan Backend Chroot di xbps-src
| Utility | Mekanisme | Default | Catatan |
|---|---|---|---|
xbps-uunshare | User namespaces | Ya | Tidak perlu setuid, lebih aman untuk user biasa |
xbps-uchroot | Namespaces + setuid | Tidak | Perlu grup xbuilder, performa lebih baik |
proot | User-space ptrace | Tidak | Tidak perlu hak khusus, tapi lebih lambat |
Troubleshooting
Error: clone (Operation not permitted)
Pastikan user berada di grup xbuilder:
groups $USER
Jika tidak ada, tambahkan:
sudo usermod -aG xbuilder $USER
Logout dan login kembali agar perubahan grup berlaku.
Catatan Penting
- Untuk penggunaan sehari-hari,
xbps-uchroottidak perlu dijalankan langsung —xbps-srcyang memanggilnya. xbps-uunshareadalah pilihan default yang lebih aman jika tidak ingin setup grupxbuilder.- Opsi
-Omembutuhkan kernel denganCONFIG_OVERLAY_FSaktif.
Referensi
man xbps-uchroot- xbps-uchroot(1) — Void Linux manpages