Takip et

Chroot Ortamına Giriş

Chroot Ortamına Giriş Bir Chroot ortamı, “change root” (kök dizini değiştir) kelimelerinin kısaltmasıdır ve bir programın veya kullanıcı

Chroot Ortamına Giriş

Bir Chroot ortamı, “change root” (kök dizini değiştir) kelimelerinin kısaltmasıdır ve bir programın veya kullanıcının erişebileceği işletim sistemi dosya hiyerarşisinin kök dizinini değiştirmek için kullanılan bir Unix işletim sistemi işlemidir. Bu işlem, programın sanki kendi izole edilmiş bir işletim sistemi içinde çalışıyormuş gibi hissetmesini sağlar, ancak aslında ana sistemin çekirdeğini (kernel) kullanır.

Neden Chroot Ortamı Kullanmalısınız?

Chroot ortamları, özellikle test ve geliştirme senaryolarında bir dizi avantaj sunar:

  • İzolasyon: Test ettiğiniz yazılımların veya yaptığınız değişikliklerin ana sisteminize zarar vermesini engeller. Chroot içindeki hatalar veya yanlış yapılandırmalar, ana sisteminizi etkilemez.
  • Bağımlılık Yönetimi: Farklı yazılımlar için farklı bağımlılık setleri gerektiren projeler üzerinde çalışırken, her bir projeyi kendi izole ortamında tutmak, bağımlılık çakışmalarını önler.
  • Güvenlik (Sınırlı): Bir chroot ortamı tam bir güvenlik duvarı olmasa da, kötü niyetli bir sürecin ana dosya sistemine erişimini kısıtlayarak ek bir güvenlik katmanı sağlar. Ancak, chroot’tan kaçış yöntemleri bulunduğundan, hassas uygulamalar için tam bir güvenlik çözümü değildir.
  • Eski Uygulamaları Çalıştırma: Ana sisteminizde artık desteklenmeyen veya güncel olmayan kütüphanelere ihtiyaç duyan eski uygulamaları çalıştırmak için kullanılabilir.
  • Temiz Test Ortamı: Her zaman temiz bir başlangıç noktasına sahip olmak, yazılım testleri için çok değerlidir.

Bu rehberde, Ubuntu 12.04 VPS üzerinde bir chroot ortamını adım adım nasıl yapılandıracağınızı öğreneceksiniz. Ubuntu 12.04 eski bir sürüm olmasına rağmen, belirtilen gereksinimler doğrultusunda bu sürüm için pratik uygulamaları göstereceğiz. Temel prensipler, daha yeni Ubuntu sürümleri için de geçerlidir, ancak bazı paket adları veya depolar farklılık gösterebilir.

Ön Gereksinimler ve Hazırlık

Chroot ortamınızı kurmaya başlamadan önce, bazı temel ön gereksinimlere ve hazırlık adımlarına ihtiyacınız var.

VPS Erişimi ve Yetkiler

Ubuntu 12.04 VPS’inize SSH üzerinden erişiminiz olmalı ve root yetkilerine (veya sudo kullanma yeteneğine) sahip olmalısınız. Tüm komutlar root kullanıcısı olarak veya sudo öneki ile çalıştırılacaktır.

Sistem Güncellemesi

Başlamadan önce, ana sisteminizin paket listesini güncelleyip mevcut paketleri yükseltmek iyi bir uygulamadır:

sudo apt-get update
sudo apt-get upgrade -y

Gerekli Paketlerin Kurulumu

Chroot ortamınızı oluşturmak için debootstrap paketine ihtiyacımız olacak. debootstrap, bir Debian veya Ubuntu sisteminin temel dizin yapısını ve minimum paket setini oluşturmak için kullanılan bir araçtır.

sudo apt-get install debootstrap -y

Chroot Dizin Yapısının Belirlenmesi

Chroot ortamınızın nerede barındırılacağını belirlemeniz gerekir. Genellikle /srv/chroot veya /var/chroot gibi bir konum tercih edilir. Biz bu rehberde /srv/chroot/ubuntu1204 yolunu kullanacağız.

sudo mkdir -p /srv/chroot/ubuntu1204

Chroot Ortamını Oluşturma

Şimdi, debootstrap kullanarak Ubuntu 12.04 için temel bir chroot ortamı oluşturalım.

Debootstrap ile Temel Sistemi Kurma

debootstrap komutunu kullanarak, belirtilen mimari (amd64), Ubuntu sürümü (precise – 12.04 kod adı), hedef dizin ve bir depo URL’si ile temel sistemi kuracağız. Ubuntu 12.04 eski bir sürüm olduğu için, standart depo yerine old-releases.ubuntu.com adresini kullanmamız gerekmektedir.

sudo debootstrap --arch amd64 precise /srv/chroot/ubuntu1204 http://old-releases.ubuntu.com/ubuntu/
  • --arch amd64: 64-bit mimariyi belirtir. VPS’inizin mimarisine uygun olduğundan emin olun.
  • precise: Ubuntu 12.04’ün kod adıdır.
  • /srv/chroot/ubuntu1204: Chroot ortamının kurulacağı hedef dizindir.
  • http://old-releases.ubuntu.com/ubuntu/: Ubuntu 12.04 paketlerinin bulunduğu arşiv deposu URL’sidir.

Bu komutun tamamlanması biraz zaman alabilir, çünkü temel sistem paketlerini indirip kuracaktır.

Chroot Ortamını Yapılandırma ve Kullanma

Temel sistem kurulduktan sonra, chroot ortamının işlevsel hale gelmesi için bazı ek yapılandırmalar yapmamız gerekiyor.

Temel Dosya Sistemlerini Bağlama (Mount Etme)

Chroot ortamının düzgün çalışabilmesi için /proc, /sys ve /dev gibi sanal dosya sistemlerinin bağlanması gerekir. Bunlar, çekirdek bilgileri, cihaz sürücüleri ve süreç yönetimi için gereklidir.

sudo mount -t proc proc /srv/chroot/ubuntu1204/proc
sudo mount -t sysfs sys /srv/chroot/ubuntu1204/sys
sudo mount -o bind /dev /srv/chroot/ubuntu1204/dev
sudo mount -o bind /dev/pts /srv/chroot/ubuntu1204/dev/pts # Terminal desteği için

DNS Çözümleyicisini Kopyalama

Chroot ortamı içinden internete erişebilmek için ana sistemin DNS yapılandırmasını kopyalamamız gerekir:

sudo cp /etc/resolv.conf /srv/chroot/ubuntu1204/etc/resolv.conf

Chroot Ortamına Giriş

Artık chroot ortamına girebilir ve içinde çalışmaya başlayabiliriz:

sudo chroot /srv/chroot/ubuntu1204 /bin/bash

Komutu çalıştırdığınızda, terminal prompt’unuz değişmeli ve artık chroot ortamının içinde olduğunuzu göstermelidir (örneğin, (chroot)root@hostname:/# gibi).

Chroot İçinde Temel Yapılandırma

Chroot ortamına girdikten sonra, onu daha kullanışlı hale getirmek için bazı temel yapılandırmalar yapabiliriz:

# Paket listesini güncelle
apt-get update

Temel araçları ve yerel ayarları kur

apt-get install -y locales dialog net-tools iputils-ping

Yerel ayarları yapılandır (gereklidir, aksi takdirde bazı programlar hata verebilir)

dpkg-reconfigure locales

Karşınıza çıkan menüden 'en_US.UTF-8 UTF-8' ve/veya 'tr_TR.UTF-8 UTF-8' gibi seçenekleri seçip varsayılan olarak ayarlayın.

Yeni bir kullanıcı oluştur (root olarak çalışmak yerine)

adduser testuser

Şifre belirleyin ve diğer bilgileri boş bırakabilirsiniz.

Yeni kullanıcıya sudo yetkisi verin

adduser testuser sudo

Root kullanıcısı için bir şifre belirleyin (isteğe bağlı, ama önerilir)

passwd root

Artık exit komutu ile chroot ortamından çıkış yapabilir ve isterseniz su - testuser komutu ile yeni oluşturduğunuz kullanıcı olarak tekrar giriş yapabilirsiniz.

Chroot Ortamından Çıkış ve Bağlantıları Kaldırma

İşiniz bittiğinde chroot ortamından çıkın ve bağladığınız dosya sistemlerini ana sistemden ayırın. Dosya sistemlerini bağladığınız sıranın tersiyle ayırmanız önemlidir.

exit # Chroot ortamından çıkış yapar

Bağlantıları kaldırma (ters sırada)

sudo umount /srv/chroot/ubuntu1204/dev/pts sudo umount /srv/chroot/ubuntu1204/dev sudo umount /srv/chroot/ubuntu1204/sys sudo umount /srv/chroot/ubuntu1204/proc

Tüm bağlantıların başarıyla kaldırıldığından emin olun. Aksi takdirde, chroot dizinini silmeye çalışırken hatalarla karşılaşabilirsiniz.

Schroot Kullanarak Chroot Yönetimi (İsteğe Bağlı, Daha Kolay)

Yukarıdaki manuel bağlama/ayırma adımları zahmetli olabilir. schroot aracı, chroot ortamlarını daha kolay yönetmenizi sağlar. Chroot ortamına girerken gerekli dosya sistemlerini otomatik olarak bağlar ve çıkarken otomatik olarak ayırır.

sudo apt-get install schroot -y

/etc/schroot/schroot.conf dosyasını düzenleyerek chroot ortamınızı yapılandırın:

sudo nano /etc/schroot/schroot.conf

Dosyanın sonuna aşağıdaki bloğu ekleyin (your_username yerine kendi ana sistem kullanıcı adınızı yazın):

[ubuntu1204]
description=Ubuntu 12.04 Precise Pangolin
type=directory
directory=/srv/chroot/ubuntu1204
users=your_username
root-users=your_username
preserve-environment=true

Kaydedip çıktıktan sonra, chroot ortamınıza tek bir komutla girebilirsiniz:

schroot -c ubuntu1204

exit yazdığınızda, schroot otomatik olarak gerekli tüm bağlantıları kaldıracaktır. Bu, chroot ortamı ile çalışmayı çok daha pratik hale getirir.

Sonuç ve Sıkça Sorulan Sorular (SSS)

Bu rehberde, Ubuntu 12.04 VPS üzerinde bir chroot ortamını nasıl oluşturacağınızı, yapılandıracağınızı ve kullanacağınızı adım adım öğrendiniz. Chroot ortamları, yazılım testi, geliştirme ve eski uygulamaları izole bir şekilde çalıştırmak için güçlü ve esnek bir yöntem sunar. Ana sisteminizde değişiklik yapma riski olmadan güvenli bir kum havuzu sağlar.

Sıkça Sorulan Sorular (SSS)

S1: Chroot ile sanal makine arasındaki fark nedir?

C1: Chroot, ana sistemin çekirdeğini (kernel) paylaşırken, sanal makine (VM) kendi çekirdeği ve donanım öykünmesi ile tamamen izole bir işletim sistemi çalıştırır. Chroot daha hafiftir ve daha az kaynak tüketirken, sanal makine daha yüksek izolasyon ve güvenlik sunar.

S2: Chroot güvenli midir? Kötü amaçlı yazılımlara karşı korur mu?

C2: Chroot, dosya sistemi izolasyonu sağlar ve programların ana sistemin geri kalanına erişimini sınırlar. Ancak, tam bir güvenlik sınırı değildir. Kötü niyetli bir kullanıcı veya uygulama, chroot ortamından çeşitli yöntemlerle kaçabilir (örneğin, çekirdek zafiyetlerini kullanarak). Hassas uygulamalar veya güvenilmeyen kod için tam güvenlik amacıyla sanal makineler veya konteyner teknolojileri (Docker gibi) daha uygundur.

S3: Chroot ortamına dosya nasıl aktarılır?

C3: Chroot ortamına girmeden önce, ana sisteminizdeki dosyaları chroot dizininin içine kopyalayabilirsiniz (örneğin, sudo cp /path/to/host/file /srv/chroot/ubuntu1204/path/in/chroot). Chroot içindeyken, ana dosya sisteminizdeki diğer dizinlere doğrudan erişiminiz yoktur. Ancak, mount --bind kullanarak ana sisteminizdeki belirli bir dizini chroot içine bağlayabilirsiniz.

S4: Birden fazla chroot ortamı oluşturabilir miyim?

C4: Evet, istediğiniz kadar chroot ortamı oluşturabilirsiniz. Her biri için farklı bir dizin yolu (örneğin, /srv/chroot/ubuntu1204, /srv/chroot/debian9 vb.) ve debootstrap komutunda farklı kod adları (örneğin, stretch for Debian 9) kullanmanız yeterlidir. schroot kullanıyorsanız, her chroot için /etc/schroot/schroot.conf dosyasına ayrı bir giriş eklemeniz gerekir.

S5: Chroot ortamını tamamen nasıl kaldırırım?

C5: Chroot ortamını kaldırmak için öncelikle içindeki tüm bağlama noktalarını (/proc, /sys, /dev vb.) ayırmanız gerekir. Eğer schroot kullanıyorsanız, bu adımı otomatik olarak yapar. Manuel olarak bağladıysanız, yukarıdaki “Bağlantıları Kaldırma” bölümündeki komutları çalıştırmanız gerekir. Tüm bağlantılar kaldırıldıktan sonra, chroot dizinini ana sisteminizden silebilirsiniz:

sudo rm -rf /srv/chroot/ubuntu1204

Bu komut dikkatli kullanılmalıdır, çünkü geri alınamaz bir şekilde tüm chroot dizinini silecektir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.