Kullanmalısınız chroot
. chroot
Komut tüm alt süreçleri gördükleri kök dizini değiştirir. Nasıl çalıştığını göstermek için bir örnek vereceğim.
Bu olay yerinde yazılmıştır; Şu an UNIX makinesinin önünde değilim. Bu örnekte, adlı bir dizin var dir
üç dosyalarla: a
, b
, c
, ve ls
. İlk üçü normal dosyalardır. ls
gerçek ls
ikili dosyaya bir sabit bağlantıdır, böylece dosyaları kroottayken listeleyebiliriz.
Ben gidiyorum chroot
içine dir
. (Büyük olasılıkla kök dizindeki bazı dizinleri unuttuğumu unutmayın.)
İşte kabuk çıktı formundaki kurulum:
$ pwd
/home/alex/test
$ l
dir
$ ls dir
a b c ls
$ ./ls dir # does the same thing
a b c ls
$ ls /
bin boot dev etc home mnt media proc sbin sys usr var
Şimdi olacak chroot
içine dir
. Bağımsız /bin/bash
değişken, yeni kök dizinde hangi işlemin çalıştırılacağını seçer. Varsayılan olarak /bin/sh
.
$ chroot /bin/bash dir
$ # this prompt is now from a subprocess running in the new root directory
$ PATH=/ ls
a b c ls
$ pwd
/
Şimdi şunlardan çıkıyoruz chroot
:
$ exit
$ # this prompt is now from the original bash process, from before the chroot
$ pwd
/home/alex/test
Umarım bu chroot
komutun nasıl çalıştığını gösterir. Temelde sorununuzu çözmek için yapmanız gereken, chroot
her oturum açtıklarında o kullanıcı olarak bir komut çalıştırmaktır . Belki de bir başlangıç komut dosyasına koymak?
Bir dosyaya olan sabit bağlantı chroot
, o dosyaya başka yollarla erişilemese bile a içinde çalışmaya devam eder (bu, sabit bağlantıların yolları değil, düğümleri gösterdiği için çalışır). Bu nedenle, kullanıcının mysql
komut gibi erişmesine izin vermek için şunları yürütebilirsiniz:
ln /usr/bin/mysql /path/to/chroot/target