Kullanmalısınız chroot. chrootKomut 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. lsgerçek lsikili dosyaya bir sabit bağlantıdır, böylece dosyaları kroottayken listeleyebiliriz.
Ben gidiyorum chrootiç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 chrootiçine dir. Bağımsız /bin/bashdeğ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 chrootkomutun nasıl çalıştığını gösterir. Temelde sorununuzu çözmek için yapmanız gereken, chroother 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 mysqlkomut gibi erişmesine izin vermek için şunları yürütebilirsiniz:
ln /usr/bin/mysql /path/to/chroot/target