Bubblewrap

Bubblewrap root yetkisine ihtiyaç duymadan uygulamaları kısıtlı alanda çalıştırabilmemize yarayan bir araçtır.

Türkmen linuxa yüklemek için aşağıdaki komutu kullanabilirsiniz:

$ ymp install bubblewrap

Kullanımı

Bubblewrap bwrap komutu ile kullanılır. Bu komut aldığı parametrelere göre kısıtlı alanınızı oluşturur. Oluşturulan kısıtlı alanda girmiş olduğunuz komut çalıştırılır. Örneğin:

$ bwrap --ro-bind / / \
    --bind $HOME $HOME \
    --tmpfs $HOME/gecici
    --dev /dev \
    --proc /proc \
    --bind /sys /sys \
    --setenv HOME $HOME/gecici \
    --hostname sandbox \
    -- /bin/bash -i

Yukarıdaki komut ile:

  • kök dizin yazılamaz bağlandı

  • ev dizin yazılabilir bağlandı

  • /dev /sys /proc dizinleri bağlanı

  • ev dizini değişkeni ayarlandı

  • hostname ayarlandı

  • parametre algılama sonlandırıldı.

  • /bin/bash çalıştırıldı.

Başka dağıtım ile kullanma

Bwrap kullanarak başka bir linux dağıtımını uygulama çalıştırmak için kullanabiliriz. Bu dokümanda örnek olarak alpine linux üzerinden anlatılacaktır.

İlk olarak rootfs imajını edinelim. Alpine linux için: https://www.alpinelinux.org/downloads/ adresinden minimal rootfs olanı indirin.

Ardından dosyaları bir dizine çıkarın. Bu aşamada root yetkisi kullanmayacağımız için dosya izinlerinin kendi kullanıcınıza ait olması gerekir.

$ mkdir alpine
$ cd alpine
$ tar -xf alpine-minirootfs-3.22.2-x86_64.tar.gz
$ cd ..

Son olarak içerisine girmek için aşağıdaki gibi bir komut kullanalım. Bu komutu daha sonra kullanmak için bir dosyaya kaydedebilirsiniz.

# dbus session bus dizinini bulalım
$ dbus_dir=$(echo $DBUS_SESSION_BUS_ADDRESS | cut -f2 -d"=" | cut -f1 -d",")
# shell çalıştıralım
$ bwrap --bind ./alpine / \
    --dev /dev \
    --proc /proc \
    --bind /sys /sys \
    --dev-bind /dev/dri /dev/dri \
    --tmpfs /tmp \
    --setenv PS1 "\$ (alpine) " \
    --ro-bind / /system \
    --bind /tmp/.X11-unix /tmp/.X11-unix \
    --bind $XDG_RUNTIME_DIR $XDG_RUNTIME_DIR \
    --bind $dbus_dir $dbus_dir \
    --bind $HOME $HOME \
    -- /bin/ash -i

Ardından paket sistemini kullanarak içerisine istediğiniz uygulamayı yükleyebilirsiniz ve çalıştırabilirsiniz. Örneğin:

$ (alpine) apk add chromium font-dejavu
$ (alpine) chromium

Not: Bu şekilde kullandığınız dağıtım root yetkisi yerine sizin kullanıcınızda çalışacaktır ve bu durum bazı öngörülemez hatalara sebep olabilir.

Tek kullanımlık ev dizini

bwrap kullanarak tek kullanımlık ev dizini oluşturabilir ve uygulamalarınızı boş ortamda deneyebilirsiniz.

$ bwrap --ro-bind / / \
    --dev /dev \
    --proc /proc \
    --bind /sys /sys \
    --bind /tmp /tmp \
    --bind /run /run \
    --tmpfs $HOME \
    -- /usr/bin/firefox