กลับไปหน้าบทความ

อ่าน 5 นาที

ชรูท

chroot chroot เป็น คำสั่ง เชลล์ และ ระบบเรียกใช้งาน บน ระบบปฏิบัติการ Unix และ ระบบปฏิบัติการ ที่คล้าย Unix ซึ่งจะเปลี่ยน ไดเร็กทอรีราก ที่ปรากฏ...

ชรูท

ชรูท
ผู้เขียนต้นฉบับบิล จอย , เอทีแอนด์ที เบลล์ แล็บโบราทอรีส์
นักพัฒนานักพัฒนาซอฟต์แวร์โอเพนซอร์สและเชิงพาณิชย์หลายราย
ปล่อยพ.ศ. 2522 ( 1979 )
ระบบปฏิบัติการยูนิก , ระบบปฏิบัติการคล้ายยูนิก , Plan 9 , อินเฟอร์โน
แพลตฟอร์มข้ามแพลตฟอร์ม
พิมพ์สั่งการ

chrootchroot เป็นคำสั่งเชลล์ และระบบเรียกใช้งานบน ระบบปฏิบัติการ Unixและระบบปฏิบัติการที่คล้าย Unixซึ่งจะเปลี่ยนไดเร็กทอรีราก ที่ปรากฏ สำหรับกระบวนการที่กำลังทำงานอยู่ในปัจจุบันและกระบวนการลูกโปรแกรมที่ทำงานในสภาพแวดล้อมที่แก้ไขแล้วจะไม่สามารถตั้งชื่อ (และโดยปกติจึงไม่สามารถเข้าถึง) ไฟล์ที่อยู่นอกโครงสร้างไดเร็กทอรีที่กำหนดได้ คำว่าchrootอาจหมายถึงระบบเรียกใช้งานchroot(2)หรือ ยูทิลิตี้ บรรทัดคำสั่งchroot(8)สภาพแวดล้อมที่แก้ไขแล้วเรียกว่าchroot jail

Chroot: จาก Gentoo ไปสู่ ​​Ubuntu

ประวัติศาสตร์

ระบบ เรียก chrootถูกนำมาใช้ระหว่างการพัฒนาUnix เวอร์ชัน 7ในปี 1979 แหล่งข้อมูลหนึ่งระบุว่าBill Joyเพิ่มระบบนี้เมื่อวันที่ 18 มีนาคม 1982 – 17 เดือนก่อนที่4.2BSDจะวางจำหน่าย – เพื่อทดสอบระบบการติดตั้งและการสร้าง[ 1 ] BSD ทุกเวอร์ชันที่มีเคอร์เนลมีchroot (2) [ 2 ] [ 3 ]การใช้คำว่า "คุก" ในยุคแรกๆ ที่นำมาใช้กับchrootมาจากBill Cheswickที่สร้างhoneypotเพื่อตรวจสอบแฮกเกอร์ในปี 1991 [ 4 ]

บทความแรกเกี่ยวกับเจลเบรกได้รับการกล่าวถึงในคอลัมน์ความปลอดภัยของSunWorld Onlineซึ่งเขียนโดย Carole Fennelly; ฉบับเดือนสิงหาคม 1999 และมกราคม 1999 ครอบคลุมหัวข้อchroot() ส่วนใหญ่ [ 5 ]

เพื่อให้มีประโยชน์สำหรับการจำลองเสมือน FreeBSD ได้ขยายแนวคิดและในเวอร์ชัน 4.0 ในปี 2000 ได้นำคำสั่งjail มาใช้ [ 6 ]

ในปี พ.ศ. 2545 บทความภาษาฝรั่งเศสโดย Nicolas Boiteux ได้อธิบายวิธีการสร้าง jails บน Linux [ 7 ]

ภายในปี 2546 ผู้ให้บริการ ไมโครเซอร์วิส อินเทอร์เน็ตรายแรก ที่มี Linux jail ให้บริการSaaS / PaaS (เช่น คอนเทนเนอร์เชลล์ พร็อกซี ircd บอท ฯลฯ) โดยคิดค่าบริการตามการใช้งานภายใน jail [ 8 ]

ในปี พ.ศ. 2548 Sunได้ปล่อยSolaris Containers (หรือที่รู้จักกันในชื่อ Solaris Zones) ซึ่งได้รับการอธิบายว่าเป็น "chroot เวอร์ชันอัพเกรด" [ 9 ]

ภายในปี 2008 LXC (ซึ่งต่อมาDockerถูกสร้างขึ้นบนพื้นฐานนี้) ได้นำเอาคำศัพท์ " คอนเทนเนอร์ " มาใช้ [ 10 ]และได้รับความนิยมในปี 2013 เนื่องจากการรวม เนมสเปซ ของผู้ใช้ เข้าไปใน เคอร์เนล Linux 3.8 [ 11 ]

การใช้งาน

สภาพแวดล้อม chroot สามารถใช้เพื่อสร้างและโฮสต์ สำเนา เสมือน แยกต่างหาก ของระบบซอฟต์แวร์ ซึ่งอาจมีประโยชน์สำหรับ:

การทดสอบและการพัฒนา
สามารถตั้งค่าสภาพแวดล้อมทดสอบใน chroot สำหรับซอฟต์แวร์ที่อาจมีความเสี่ยงมากเกินไปที่จะนำไปใช้งานบนระบบใช้งานจริงได้
การควบคุมการพึ่งพา
ซอฟต์แวร์สามารถพัฒนา สร้าง และทดสอบได้ในสภาพแวดล้อม chroot ที่มีเฉพาะไลบรารีที่จำเป็นเท่านั้น ซึ่งสามารถป้องกันปัญหาการเชื่อมโยงที่ไม่สมดุลบางประเภทที่อาจเกิดขึ้นจากการที่นักพัฒนาสร้างโปรเจกต์โดยติดตั้งไลบรารีโปรแกรมที่แตกต่างกัน
ความเข้ากันได้
ซอฟต์แวร์รุ่นเก่าหรือซอฟต์แวร์ที่ใช้ABI แตกต่างกัน บางครั้งจำเป็นต้องทำงานในสภาพแวดล้อม chroot เนื่องจากไลบรารีหรือไฟล์ข้อมูลที่รองรับอาจมีชื่อหรือการเชื่อมโยงที่ขัดแย้งกับไฟล์ของระบบโฮสต์ได้
การกู้คืน
หากระบบไม่สามารถบูตได้ สามารถใช้ chroot เพื่อย้ายกลับเข้าไปในสภาพแวดล้อมที่เสียหายได้หลังจากบูตจากระบบไฟล์รูททางเลือก (เช่น จากสื่อการติดตั้ง หรือLive CD )
การแยกสิทธิพิเศษ
โปรแกรมต่างๆ สามารถนำตัวระบุไฟล์ ที่เปิดอยู่ (สำหรับไฟล์ไปป์ไลน์และการเชื่อมต่อเครือข่าย) เข้าไปใน chroot ได้ ซึ่งจะช่วยลดความซับซ้อนในการออกแบบ jail โดยไม่จำเป็นต้องทิ้งไฟล์ที่กำลังทำงานไว้ภายในไดเร็กทอรี chroot นอกจากนี้ยังช่วยลดความซับซ้อนของการจัดเรียงทั่วไปในการเรียกใช้ส่วนที่อาจมีความเสี่ยงของโปรแกรมที่มีสิทธิ์พิเศษในแซนด์บ็อกซ์ เพื่อป้องกันการละเมิดความปลอดภัยล่วงหน้า โปรดทราบว่า chroot อาจไม่เพียงพอที่จะจำกัดกระบวนการที่มีสิทธิ์ระดับ root ได้เสมอไป

ข้อจำกัด

กลไก chroot ไม่ได้มีจุดประสงค์เพื่อป้องกันการดัดแปลงโดยเจตนาโดยผู้ใช้ที่มีสิทธิ์พิเศษ (root) ข้อยกเว้นที่สำคัญคือNetBSDซึ่งถือว่า chroot เป็นกลไกด้านความปลอดภัยและไม่มีการหลบหนีใดๆ ที่เป็นที่รู้จัก ในระบบส่วนใหญ่ บริบท chroot จะไม่เรียงซ้อนกันอย่างถูกต้อง และโปรแกรมที่ถูก chroot ด้วยสิทธิ์ที่เพียงพออาจทำการ chroot ครั้งที่สอง[ 12 ]เพื่อหลุดพ้น เพื่อลดความเสี่ยงจากจุดอ่อนด้านความปลอดภัยนี้ โปรแกรมที่ถูก chroot ควรสละสิทธิ์ root โดยเร็วที่สุดหลังจากทำการ chroot หรือควรใช้กลไกอื่นๆ เช่นFreeBSD jailsแทน โปรดทราบว่าบางระบบ เช่นFreeBSDใช้มาตรการป้องกันการโจมตี chroot ครั้งที่สอง[ 13 ]

ในระบบที่รองรับโหนดอุปกรณ์บนระบบไฟล์ทั่วไปผู้ใช้ root ที่ถูกจำกัดสิทธิ์ด้วย chroot ยังคงสามารถสร้างโหนดอุปกรณ์และเมานต์ระบบไฟล์บนโหนดเหล่านั้นได้ ดังนั้น กลไก chroot จึงไม่ได้มีจุดประสงค์เพื่อปิดกั้นการเข้าถึงอุปกรณ์ระบบระดับต่ำโดยผู้ใช้ที่มีสิทธิ์พิเศษ และไม่ได้มีจุดประสงค์เพื่อจำกัดการใช้ทรัพยากร เช่นการอ่าน/เขียนข้อมูล แบนด์วิดท์ พื้นที่ดิสก์ หรือเวลา CPU ระบบ Unix ส่วนใหญ่ไม่ได้เน้นระบบไฟล์โดยสมบูรณ์ และยังคงมีฟังก์ชันการทำงานที่อาจก่อให้เกิดปัญหา เช่น การเชื่อมต่อเครือข่ายและการควบคุมกระบวนการทำงาน ผ่านทางอินเทอร์เฟซการเรียกใช้ระบบสำหรับโปรแกรมที่ถูกจำกัดสิทธิ์ด้วย chroot

เมื่อเริ่มต้นโปรแกรม คาดว่าจะพบพื้นที่ชั่วคราวไฟล์การกำหนดค่า โหนดอุปกรณ์และไลบรารีที่ใช้ร่วมกันในตำแหน่งที่กำหนดไว้ล่วงหน้า สำหรับโปรแกรม chrooted ที่จะเริ่มต้นได้อย่างสำเร็จ ไดเร็กทอรี chroot จะต้องมีไฟล์เหล่านี้อย่างน้อยหนึ่งชุด ซึ่งอาจทำให้การใช้ chroot เป็นกลไกแซนด์บ็อกซ์ทั่วไปทำได้ยาก เครื่องมือเช่น Jailkit [ 14 ]สามารถช่วยลดความยุ่งยากและทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติ

มีเพียงผู้ใช้ root เท่านั้น ที่สามารถทำการ chroot ได้ จุดประสงค์ก็เพื่อป้องกันไม่ให้ผู้ใช้ติดตั้ง โปรแกรม setuid ไว้ ภายใน chroot jail ที่สร้างขึ้นเป็นพิเศษ (เช่น ด้วย ไฟล์ /etc/passwdและ/etc/shadow ปลอม ) ซึ่งจะหลอกให้โปรแกรมนั้นสามารถยกระดับสิทธิ์ได้

ระบบปฏิบัติการ Unix บางระบบมีส่วนขยายของกลไก chroot เพื่อแก้ไขข้อจำกัดเหล่านี้อย่างน้อยบางส่วน (ดูการใช้งานเทคโนโลยีการจำลองเสมือนระดับระบบปฏิบัติการ )

แอปพลิเคชันกราฟิกบน chroot

สามารถเรียกใช้แอปพลิเคชันกราฟิกในสภาพแวดล้อม chrooted ได้โดยใช้วิธีการต่างๆ เช่น: [ 15 ] [ 16 ]

  • ใช้xhost (หรือคัดลอกรหัสลับจาก .Xauthority)
  • เซิร์ฟเวอร์ X แบบซ้อนกัน เช่นXnest หรือ Xephyrรุ่นใหม่กว่า(หรือเริ่มเซิร์ฟเวอร์ X จริงๆ จากภายใน jail ก็ได้)
  • การเข้าถึง chroot ผ่านSSH โดย ใช้คุณสมบัติการส่งต่อ X11 ( ssh -X )
  • xchrootเป็นเวอร์ชันเพิ่มเติมของ chroot สำหรับผู้ใช้และการส่งต่อ Xorg/X11 (socat/mount)
  • เซิร์ฟเวอร์ VNC X11 และการเชื่อมต่อ ไคลเอ็นต์ VNCจากภายนอกสภาพแวดล้อม
  • Atoms เป็นเครื่องมือจัดการ chroot ของ Linux ที่มี GUI ที่ใช้งานง่าย[ 17 ]

แอปพลิเคชันที่โดดเด่น

ตัวแทน การถ่ายโอนอีเมล ของ Postfixอาจทำงานเป็นไปป์ไลน์ของโปรแกรมช่วยเหลือที่แยกกัน[ 18 ]

เช่นเดียวกับ 4.2BSD ก่อนหน้านี้ ระบบสร้างแพ็กเกจภายในของ Debian และ Ubuntu ใช้ chroot อย่างกว้างขวางเพื่อตรวจจับการพึ่งพาการสร้างแพ็กเกจโดยไม่ตั้งใจSUSEก็ใช้วิธีที่คล้ายกันกับโปรแกรม สร้าง แพ็กเกจของตน Fedora , Red Hatและดิสทริบิวชันที่ใช้ RPM อื่นๆ อีกมากมาย สร้างRPM ทั้งหมดโดยใช้เครื่องมือ chroot เช่นmock

เซิร์ฟเวอร์ FTPจำนวนมากสำหรับระบบ POSIX ใช้กลไก chroot เพื่อจำกัดการเข้าถึงของไคลเอนต์ FTP ที่ไม่น่าเชื่อถือ โดยอาจทำได้โดยการสร้างกระบวนการลูกเพื่อจัดการกับการเชื่อมต่อที่เข้ามา จากนั้นจึงใช้ chroot กับกระบวนการลูก (เพื่อหลีกเลี่ยงการต้องใส่ไลบรารีที่จำเป็นสำหรับการเริ่มต้นโปรแกรมลงใน chroot)

หากเปิดใช้งานการแยกสิทธิ์แล้ว ดีมอน OpenSSHจะ chroot กระบวนการช่วยเหลือที่ไม่มีสิทธิ์เข้าไปในไดเร็กทอรีว่างเพื่อจัดการการรับส่งข้อมูลเครือข่ายก่อนการตรวจสอบสิทธิ์สำหรับไคลเอ็นต์แต่ละราย ดีมอนยังสามารถแซนด์บ็อกซ์เซสชัน SFTP และเชลล์ใน chroot ได้อีกด้วย (ตั้งแต่เวอร์ชัน 4.9p1 เป็นต้นไป) [ 19 ]

ChromeOSสามารถใช้ chroot เพื่อเรียกใช้อินสแตนซ์ Linux โดยใช้Crouton [ 20 ]ซึ่งทำให้ระบบปฏิบัติการที่มีขนาดเล็กสามารถเข้าถึงทรัพยากรฮาร์ดแวร์ได้ ผลกระทบด้านความปลอดภัยที่เกี่ยวข้องในบทความนี้ใช้ได้กับกรณี นี้

ระบบไฟล์เสมือนและไฟล์การกำหนดค่าของเคอร์เนลโฮสต์ Linux

เพื่อให้สภาพแวดล้อม chroot ใน Linux สามารถใช้งานได้ ระบบไฟล์เสมือนของเคอร์เนลและไฟล์การกำหนดค่าต่างๆ จะต้องถูกเมานต์/คัดลอกจากโฮสต์ไปยัง chroot ด้วยเช่นกัน

# ติดตั้งระบบไฟล์เสมือนเคอร์เนลTARGETDIR = "/mnt/chroot" mount -t proc proc $TARGETDIR /proc mount -t sysfs sysfs $TARGETDIR /sys mount -t devtmpfs devtmpfs $TARGETDIR /dev mount -t tmpfs tmpfs $TARGETDIR /dev/shm mount -t devpts devpts $TARGETDIR /dev/pts# คัดลอก /etc/hosts /bin/cp -f /etc/hosts $TARGETDIR /etc/# คัดลอก /etc/resolv.conf /bin/cp -f /etc/resolv.conf $TARGETDIR /etc/resolv.conf# เชื่อมโยง /etc/mtab chroot $TARGETDIR rm /etc/mtab 2 > /dev/null chroot $TARGETDIR ln -s /proc/mounts /etc/mtab 

ดูเพิ่มเติม

  • chroot(2): เปลี่ยนไดเร็กทอรีราก –  คู่มือการเรียกใช้ระบบของFreeBSD
  • chroot(8): เปลี่ยนไดเร็กทอรีราก –  คู่มือผู้จัดการระบบFreeBSD
  • chroot(2): เปลี่ยนไดเร็กทอรีราก –  คู่มือโปรแกรมเมอร์ลินุกซ์ – การเรียกใช้ระบบ
  • การผสานรวม GNU/Linux กับ Android โดยใช้ chroot
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Chroot&oldid=1352491740 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ชรูท

chroot chroot เป็น คำสั่ง เชลล์ และ ระบบเรียกใช้งาน บน ระบบปฏิบัติการ Unix และ ระบบปฏิบัติการ ที่คล้าย Unix ซึ่งจะเปลี่ยน ไดเร็กทอรีราก ที่ปรากฏ...

ประวัติศาสตร์

ระบบ เรียก chroot ถูกนำมาใช้ระหว่างการพัฒนา Unix เวอร์ชัน 7 ในปี 1979 แหล่งข้อมูลหนึ่งระบุว่า Bill Joy เพิ่มระบบนี้เมื่อวันที่ 18 มีนาคม 1982 – 17 เดือนก่อนที่ 4.

การใช้งาน

สภาพแวดล้อม chroot สามารถใช้เพื่อสร้างและโฮสต์ สำเนา เสมือน แยกต่างหาก ของระบบซอฟต์แวร์ ซึ่งอาจมีประโยชน์สำหรับ:

ข้อจำกัด

กลไก chroot ไม่ได้มีจุดประสงค์เพื่อป้องกันการดัดแปลงโดยเจตนาโดยผู้ใช้ที่มีสิทธิ์พิเศษ (root) ข้อยกเว้นที่สำคัญคือ NetBSD ซึ่งถือว่า chroot เป็นกลไกด้านความปลอดภัยและไม่มีการหลบหนีใดๆ ที่เป็นที่รู้จัก ในระบบส่วนใหญ่ บริบท chroot จะไม่เรียงซ้อนกันอย่างถูกต้อง...