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
/bin/bash uygulamalasını tüm dependency kütüphaneler ile bu dizine kopyalayalım ve çalıştıralımmkdir -p /home/foo
Yeni açılan bash sanal bir ortamda çalıştığı için diğer hiç bir uygulamayı (ls,mkdir gibi) bulamaz.chroot /home/foo /bin/bash
Çı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