Chroot Kullanımı

 chroot komutu çalışan sistem üzerinde belirli bir klasöre root yetkisi verip sadece o klasör içerisinde eylemler gerçekleştirmemizi olanak tanıyan bir komuttur. Sağladığı avantajlar çok fazladır. Bunlar;

  • Kullanıcının yetkilerini sınırlandırma.
  • Kullanıcıyı sistemden yalıtma.
  • Güvenlik.
  • Kullanıcı kendine özel geliştirme ortamı oluşturabilir.
  • Yazılım bağımlıkları sorunlarına çözüm olabilir.
  • Kullanıcıya sadece kendisine verilen alanda sınırsız yetki verme vb.


Yukarıdaki resimde user1 altında wrk dizini altına yeni bir sistem kurulmuş gibi yapılandırmayı gerçekleştirmiş.
Bu işlem için küçük bir örnek yapalım.
çalıştığımız dizin wrk dizin. Bunun yeni kök dizin olması için;
sudo chroot /home/user1/wrk seklinde yapabiliriz.
Bu sistemi kaldırmak için ise;
sudo rm -rf /home/user1/wrk komutuyla kaldırabiliriz.

Bu yapının oluşturulması için temel komutları ve komut yorumlayıcının olması gerekmektedir. Bunun için bize gerekli olan komutları bu yapının içine koymamız gerekmektedir.
Örneğin ls komutu için doğrudan çalışıp çalışmadığını ldd komutu ile kontrol edelim.


Görüldüğü gibi ls komutunun çalışması için bağımlı olduğu kütüphane dosyaları bulunmaktadır. Bu dosyaları yeni oluşturduğumuz wrk klasörüne aynı dizin yapısında kopyalamamız gerekmektedir.
Bu dosyalar eksiksiz olursa ls komutu çalışacaktır. Fakat bu işlemi tek tek yapmamız çok zahmetli bir işlemdir. Bu işşi halledecek script dosyası aşağıda verilmiştir.

lldscript.sh

#!/bin/bash

if [ ${#} != 2 ]
then
    echo "usage $0 PATH_TO_BINARY target_folder"
    exit 1
fi

path_to_binary="$1"
target_folder="$2"

# if we cannot find the the binary we have to abort
if [ ! -f "${path_to_binary}" ]
then
    echo "The file '${path_to_binary}' was not found. Aborting!"
    exit 1
fi

# copy the binary itself
echo "---> copy binary itself"
cp --parents -v "${path_to_binary}" "${target_folder}"

# copy the library dependencies
echo "---> copy libraries"
ldd "${path_to_binary}" | awk -F'[> ]' '{print $(NF-1)}' | while read -r lib
do
    [ -f "$lib" ] && cp -v --parents "$lib" "${target_folder}"
done
Kullanmak için ;
Ben kendi örneğimde masaüstünde test dizini oluşturdum ve işlemleri orada yaptım.
bash lldscript.sh /bin/ls $PWD/test/ komutunu kullanmalıyız.


Bu işlemi diğer komutlar içinde sırasıyla yapmamız gerekmektedir.
rmdir

mkdir
bash
Oluşturduğumuz alanda çalışmak için
sudo chroot $PWD/test komutunu kullanmalıyız.

çıkış için ise exit komutunu kullanmalıyız.


Kaynak:
https://stackoverflow.com/questions/64838052/how-to-delete-n-characters-appended-to-ldd-list








Yorumlar