# mkdir /var/chroot
Sonra bash in dependency lerini görelim
# ldd /bin/bash
linux-vdso.so.1 => (0x00007ffd76de9000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f2cc8d6a000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f2cc8b66000)
libc.so.6 => /lib64/libc.so.6 (0x00007f2cc8799000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2cc8f94000)
Daha sonra bu dependency leri aşağıda ki gibi kopyalayalım
cd /var/chroot/
mkdir lib64
cp /lib64/libtinfo.so.5 ./lib64/
cp /lib64/libdl.so.2 ./lib64/
cp /lib64/libc.so.6 ./lib64/
cp /lib64/ld-linux-x86-64.so.2 ./lib64/
mkdir bin
cp /bin/bash ./bin/
şimdi test etmek istersek
#chroot /var/chroot/
Böylece ls komutunun bile çalışmadığını görebiliriz.
Aslında tüm komutları bu şekilde yapsak isteiğimiz komutları chroot olacak kullanıcıya sağlam suretiyle işleri halledebiliriz. Ancak kolay bir yolunu sağlsun linkin sahibi yapmış yine kendisine ait olan kodu değiştirmeden ekliyorum
#!/bin/bash
# This script can be used to create simple chroot environment
# Written by LinuxCareer.com
daha sonra bu scriptin yetkilerini değiştirip bir kaç örnek komut ekleyerek deniyorum
chmod 700 chroot.sh
./chroot.sh /bin/{ls,cd,echo,rm}
chroot /var/chroot
ls
ls :command not found
Çalışmadı “ls” komutu bile çalışmadı.
şimdi bir kullanıcı ve group oluşturalım. Böylece SSH ayarlarımız ile bazı kullanıcılara sadece istediğimiz komutlara izin verebiliriz.
groupadd chrootjail
mkdir -p /var/chroot/home
adduser tester2 -m -d /var/chroot/home/tester2 -G chrootjail
passwd tester2
Daha sonra ssh config dosyamızı ayarlıyoruz
/etc/ssh/sshd_config
PasswordAuthentication yes
Match group chrootjail
ChrootDirectory /var/chroot/
ancak bunlar hala yeterli değildir.
Çünkü tester2 adlı kullanıcıyla ssh yaptığımızda chroot ortamına gireriz ancak “ls” komutu hala çalışmaz.
-bash-4.2$ echo $PATH
/usr/local/bin:/usr/bin
çünkü biz komutları “/var/chroot/bin” yada tester2 nin gördüğü şekilde “/bin” içine koyduk. Ancak yukarda görüldüğü üzere tester2 nin PATH environment değerlerinde “/bin” yok. Dolayısı ile komutaları göremiyor. İnternette baktığım bir kaç kaynak işe yaramayınca bence mevcut PATH değişkenlerini yaratıp, linkledim 🙂
mkdir -p usr/local/bin
cd usr/local/bin/
ln -s ../../../bin/bash bash
ln -s ../../../bin/cd cd
ln -s ../../../bin/ls ls
ln -s ../../../bin/echo echo
ln -s ../../../bin/rm rm
Böylece çalıştı.
Aslında çalışmamasının sebebi chroot için oluşturduğum userın home directory si yanlış bkz:
-bash-4.2$ cd
-bash: cd: /var/chroot/home/tester2: No such file or directory
Bu sorunu düzeltirsem
ok onuda buldum , muhtemelen desired bir çözüm değil ama çalıştı 🙂
adduser tester3 -m -d /home/tester3 -G chrootjail
mv /home/tester3 /var/chroot/home/
passwd tester3
ayrıca PATH değişkenini “~/.bashrc” içinde
export PATH=$PATH:/bin
olarak değiştirdim/ekledim.
]]>