Bu yazıda
chroot komutunun Linux'taki işlevini ve kullanımını örneklerle tartışacağız.
chroot Komutu Nedir?
Chroot komutu, geçerli işlemin görünen kök dizinini ve bunun alt işlemlerini değiştirir. Unix tabanlı bir sistemde kök, temel dizine (/) atıfta bulunur. Chroot, işlemin içinde çalıştığı sahte bir kök ortamı yaratır.
Böyle bir ortamda çalışan işlemler, o ortamın dışındaki dosya ve komutlara erişemez veya “işlem o ortam içinde hapsedilir” diyebiliriz .
Bu nedenle oluşturulan ortama “chroot jail” de denir .
chroot Komutu Nerede Kullanılır?
Choort ortamı özellikle aşağıdaki amaçlar için faydalı olabilir:
- Dosya sisteminizi kurtarma ve önyükleyiciyi yeniden yükleme: Hasarlı bir dosya sistemini canlı bir CD'deki bir bağlama noktasına bağlamak için chroot komutunu kullanabiliriz. Bunu yapmak, hasar sistemi üzerinde çalışmamıza ve normal olarak root(/)'a monte edilmiş gibi düzeltmeye çalışmamıza izin verir.
- Yazılım Testi: Test ortamları, aksi takdirde sistem genelinde sorunlara neden olabilecek yeni yazılımları çalıştırmak ve test etmek için iyi bir yol sağlar. Genellikle, bu tür görevler için kapsayıcılar kullanılır, ancak chroot ortamı, ana sisteminizde bir çizik bırakmadan küçük komut dosyalarını test etmek için kolay bir tercih olabilir.
- Uyumsuz bağımlılıklarla Yazılım Çalıştırma: Bir uygulama ve bağımlılıkları ayrı bir chroot klasöründe tutularak, çakışan bağımlılıklara sahip iki yazılım çalıştırılabilir.
Linux'ta chroot komutu nasıl kullanılır?
Teori tamamen temizlendikten sonra, chroot komutunu nasıl kullanacağımızı öğrenelim.
Argümanlarla chroot'un sözdizimi:
1 | chroot [OPTION] NEWROOT [COMMAND [ARG]...] |
KOMUT'u kök dizini NEWROOT olarak ayarlanmış olarak çalıştırır.
chroot için mevcut SEÇENEKler şunlardır:
userspec=KULLANICI:GRUP | Kullanılacak kullanıcı ve grubu (kimlik veya ad) belirtmek için |
groups=G_LIST | Ek grupları g1,g2,..,gN olarak belirtmek için |
askip-chdir | Çalışma dizinini '/' olarak değiştirmez |
KOMUT belirtilmezse, varsayılan komut olan
“$SHELL” -i çalıştırılır.
Seçeneklerle chroot'un sözdizimi:
SEÇENEKLER:
help | Yardımı görüntülemek ve çıkmak için. |
version | Sürüm bilgilerini yazdırır ve çıkar. |
chroot komutunun örnek kullanımı
Bir chroot komutunun gösterimi için, bir chroot ortamı oluşturacağız ve bunun içinde bash kabuğunu çalıştıracağız.
1. chroot dizini oluşturun. Adını fake_root koyalım.
2. mkdir komutunu kullanarak fake_root içinde gerekli dizinleri oluşturun . Bin genellikle ikili dosyaları içerir ve lib,lib64 birlikte bu programların gerektirdiği kitaplıkları içerir.
1 | mkdir -p $HOME/fake_root/{bin,lib,lib64} |
3. Gerekli ikili dosyaları kökten chroot ortamına kopyalayın. Bazen küçük düzenleme amaçları için
vim gibi metin düzenleyicileri dahil etmek de iyi bir seçenektir.
1 | cp /bin/{bash,ls} $HOME/fake_root/bin/ |
4. Bu ikili dosyaların lib ve lib64 içinde saklanan bağımlılıkları vardır. İkili dosyaların doğru çalışmasını istiyorsak, bu bağımlılıkları chroot ortamına da kopyalamamız gerekir.
Şekil 1:
Ubuntu'da ls ve bash'ın bağımlılığı
5. cp komutunu kullanarak bağımlılıkları chroot ortamına kopyalayın
1 | cp --parent {/lib/x86_64-linux-gnu/libtinfo.so.6,/lib/x86_64-linux-gnu/libdl.so.2,/lib/x86_64-linux-gnu/libc.so.6,/lib64/ld-linux-x86-64.so.2,/lib/x86_64-linux-gnu/libpthread.so.0,/lib/x86_64-linux-gnu/libselinux.so.1,/lib/x86_64-linux-gnu/libpcre2-8.so.0,} ~/fake_root/ |
6. Bağımlılıkları başarıyla kopyaladıktan sonra chroot komutunu çalıştırın.
1 | sudo chroot $HOME/jail /bin/bash |
Şekil 2: chroot ortamına girin
Chroot ortamını etkinleştirdikten sonra, root ayrıcalıklarını yükseltmeden fake_root dışındaki dosyalara erişip erişemediğinizi kontrol ederek test edebilirsiniz .
Çözüm
Bu bizi chroot komutuyla ilgili bu makalenin sonuna getiriyor. Gelecekte bu tür Linux Komutları hakkında daha fazla bilgi edinmek için bizi izlemeye devam edin.