chroot
คุณควรใช้ chroot
คำสั่งเปลี่ยนแปลงไดเรกทอรีรากว่าทุกกระบวนการที่เด็กดู ฉันจะยกตัวอย่างเพื่อสาธิตวิธีการทำงาน
สิ่งนี้ถูกเขียนขึ้นตรงจุด ตอนนี้ฉันไม่ได้อยู่หน้าเครื่อง UNIX ในตัวอย่างนี้มีไดเรกทอรีที่เรียกว่าdir
สามไฟล์: a
, b
, และc
ls
สามไฟล์แรกเป็นไฟล์ปกติ ls
เป็นฮาร์ดลิงก์ไปยังls
ไบนารีจริงเพื่อให้เราสามารถแสดงรายการไฟล์ในขณะที่อยู่ใน chroot
ฉันจะลงไปchroot
dir
(โปรดทราบว่าฉันอาจลืมบางไดเรกทอรีในไดเรกทอรีราก)
นี่คือการตั้งค่าในรูปแบบเอาต์พุตเชลล์:
$ 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
ตอนนี้ผมจะเข้าไปchroot
Chooses โต้แย้งสิ่งที่กระบวนการควรจะทำงานกับไดเรกทอรีรากใหม่ มันเริ่มต้นที่dir
/bin/bash
/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
/
ตอนนี้เราออกจากchroot
:
$ exit
$ # this prompt is now from the original bash process, from before the chroot
$ pwd
/home/alex/test
ฉันหวังว่าสิ่งนี้แสดงให้เห็นว่า chroot
คำสั่งทำงานอย่างไร โดยทั่วไปสิ่งที่คุณต้องทำเพื่อแก้ไขปัญหาของคุณคือการเรียกใช้chroot
คำสั่งในฐานะผู้ใช้ทุกครั้งที่เข้าสู่ระบบบางทีใส่ไว้ในสคริปต์เริ่มต้น?
ฮาร์ดลิงก์ไปยังไฟล์จะยังคงทำงานต่อไปภายในchroot
แม้ว่าไฟล์นั้นจะไม่สามารถเข้าถึงได้ด้วยวิธีอื่น (วิธีนี้ใช้งานได้เพราะฮาร์ดลิงก์ชี้ไปที่ inodes ไม่ใช่พา ธ ) ดังนั้นเพื่อให้ผู้ใช้สามารถเข้าถึงได้เช่นmysql
คำสั่งคุณจะดำเนินการ:
ln /usr/bin/mysql /path/to/chroot/target