16 Aralık 2020 Çarşamba

chroot komutu

Giriş
chroot bir Linux sistem çağrısıdır. Çalışan bir uygulamanın kök dizininin değiştirilmesini sağlar. chroot daha çok uygulamalar için sanal bir ortam hazırlamak için kullanılır. Bu sanal ortama chroot jail adı verilir.

Kodla
Örnek
Şöyle yaparız
#define _BSD_SOURCE
#include <stdio.h>
#include <unistd.h>
const char newroot[]="/path/to/chroot";
int main(int c, char **v, char **e) {
    int rc; const char *m;
    if ( (m="chdir" ,rc=chdir(newroot)) == 0
      && (m="chroot",rc=chroot(newroot)) == 0
      && (m="setuid",rc=setuid(getuid())) == 0 )
            m="execve", execve(v[1],v+2,e);
    perror(m);
    return 1;
}
Örnek
Yeni bir dizin yaratalım
mkdir -p /home/foo
/bin/bash uygulamalasını tüm dependency kütüphaneler ile bu dizine kopyalayalım ve çalıştıralım
chroot /home/foo /bin/bash
Yeni açılan bash sanal bir ortamda çalıştığı için diğer hiç bir uygulamayı (ls,mkdir gibi) bulamaz. 
Çıkmak için exit komutunu kullanırız.

 --userspec seçeneği
Açıklaması şöyle
Although you need to invoke chroot as root, the chroot option --userspec=USER:GROUP will run the command under the non-root UID/GID.

Hiç yorum yok:

Yorum Gönder