Ana içeriğe geç

Platformlar

Kule macOS ve Linux'ta çalışır. Windows daha sonraki bir sürüm için planlanıyor.

Bir bakışta destek​

macOSLinux
SürümlermacOS 13 ya da sonrasıx86_64 sürüm dosyaları (Ubuntu 22.04'te derlenir, Fedora'da test edilir); diğer mimariler kaynak koddan
Sürüm dosyalarıUniversal .dmg (Apple silicon ve Intel).deb, .rpm, .tar.gz olarak yalnızca kule
SandboxSeatbeltLandlock (Linux 6.2 ya da sonrası), seccomp, ad alanları (namespaces)
Sandbox içinde ağ kurallarıEvetLinux 6.7 ya da sonrası
Sandbox'ın reddettikleri listelenirEvet, komuttan sonra ve sandbox.jsonl içindeHayır (Landlock yalnızca denetim kaydına (audit log) bildirir); komut yine de bir izin hatası alır
Görevin kopyasıAPFS klonu: neredeyse hiç yer kaplamazBtrfs ve XFS'te reflink; ext4'te tam kopya
Başlangıçta paket önbelleklerinpm ve cargo sizinkilerden klonlanırBoş: ilk kurulum yeniden indirir
/tmpSistemle ortakHer görevin kendine ait
Kendine ait süreçler–Evet: bir komut başka hiçbir programı görmez ve ona sinyal gönderemez
Kendine ait ağ ad alanı–Evet, erişebildiği tek şey proxy
Sunucular bu bilgisayarla sınırlıNode, Python ve Ruby loopback'e yönlendirilir; diğer programların portları korunur (shield)Dinlenen her adres loopback'e çevrilir
GPU kapalıykenMetal (ve OpenCL) hiçbir aygıt alamaz/dev/dri ve NVIDIA aygıtları salt okunur
Gizli değer deposunun anahtarıKeychainSecret Service
Dosya yöneticisinde gösterFinderFiles (D-Bus FileManager1)

Linux: sandbox'ın ihtiyaç duydukları​

  • En az Landlock ABI 3 (Linux 6.2): dosya kısaltmayı (truncation) kapsayan ilk sürüm. Daha eski bir çekirdekte sandbox kurulamaz ve komutlar çalışmaz.

  • Ağ kuralları için Landlock ABI 4 (Linux 6.7). Daha eski bir çekirdekte, ağ trafiği proxy'den geçmesi gereken bir komut açık bırakılmak yerine reddedilir.

  • Komutun kendine ait bir ağı, süreçleri, System V IPC'si ve makine adı olması için ayrıcalıksız kullanıcı ad alanları (unprivileged user namespaces). Ubuntu 24.04 bunları varsayılan olarak reddeder:

    sudo sysctl kernel.apparmor_restrict_unprivileged_userns=0

    Bunlar olmadan Kule, siz daha zayıf yalıtımı kabul edene kadar hiçbir ajanı çalıştırmaz (bkz. kule isolation); kabul ettiğiniz sürece de neyin eksik olduğunu söyler.

Görevin klasörleri dışındaki Unix soketlerine, Landlock'un bunlar için koyduğu kural (ABI 9) sayesinde ulaşılamaz. Daha eski çekirdeklerde çalışma zamanı dizininiz (/run/user/<uid>; oturum veri yolu (session bus) ile Docker'ın ve Podman'ın rootless soketlerinin bulunduğu yer) komut için boş bir dizinle örtülür; komut başladığında var olan diğer her soket de örtülür.

Bir ajanın kendi durum dizinindeki ayarları yalnızca o ajan için salt okunur olarak bağlanır (mount). Kullanıcı ad alanları yoksa ve bağlantı (link) olan ya da henüz var olmayan ayarlar için bunlar bunun yerine çalıştırmadan sonra geri konur; geri koymanın yerini aldığı her şey ~/.kule/kept/replaced'e taşınır, asla kaybolmaz.

Henüz değil​

  • Windows.
  • Proxy üzerinden HTTP/2 (istemciler HTTP/1.1'e geri döner) ve WebSocket yükseltmeleri.
  • macOS'ta görevler sistemin /tmp'sini paylaşır: macOS sandbox'ı bir yolu taşıyamaz.
  • macOS'ta, bir görevin ağ trafiği proxy'den geçerken sistemin sertifika hizmeti görevin komutlarına kapalı kalır. Sertifikaları yalnızca bu hizmet üzerinden doğrulayan bir araç, bir görevde HTTPS kullanamaz. pip 24.2 ve sonrası --use-deprecated=legacy-certs ile çalışır (daha eski pip bu seçeneği reddeder; bu yüzden Kule onu kendisi eklemez). Go'ya, SSL_CERT_FILE'ın gösterdiği kök sertifikaları kullanması söylenir.
  • macOS'ta NuGet'in ve Maven'ın araçları yalnızca sistemin kök sertifikalarına güvenir; bu yüzden onların depoları, yazmalar dahil, görülmeden geçer; Go'nun modül proxy'si de öyle.
  • Gemini, AI Studio'dan alınmış ve bir dosyada saklanan bir API anahtarı ister: GEMINI_FORCE_FILE_STORAGE=true gemini, ardından /auth.

İlgili​