Chroot - Chroot

A chroot kuni Unix operatsion tizimlar ko'rinishni o'zgartiradigan operatsiya ildiz katalogi joriy ishlaydigan jarayon uchun va uning bolalar. Bunday o'zgartirilgan muhitda ishlaydigan dastur belgilangan katalog daraxti tashqarisidagi fayllarni nomlay olmaydi (va shuning uchun odatda kira olmaydi). "Chroot" atamasi xroot (2) tizim qo'ng'irog'i yoki xroot (8) o'rash dasturi. O'zgartirilgan muhit a deb nomlanadi chroot qamoqxonasi.

Tarix

Chroot tizimiga qo'ng'iroq ishlab chiqish paytida kiritilgan 7-versiya Unix 1979 yilda. Bir manbadan shuni aytish mumkin Bill Joy uni 1982 yil 18 martda - 17 oy oldin qo'shgan 4.2BSD o'rnatildi va tizimni sinab ko'rish uchun chiqarildi.[1], bu yadro atrofida harakatlanadigan kod uchun SCCS fayllarini talqin qilishda xato bo'lgan. Yadroga ega bo'lgan barcha BSD versiyalarida chroot (2) mavjud.[2][3] Chrootga nisbatan "qamoq" atamasidan erta foydalanish kelib chiqadi Bill Cheswick yaratish chuqurchalar nazorat qilish kraker 1991 yilda.[4]

Jailbreak haqidagi birinchi maqola SunWorld Online xavfsizlik ustunida muhokama qilingan bo'lib, uni Karol Fennelli yozgan; 1999 yil avgust va 1999 yil yanvar nashrlari ko'plab chroot () mavzularini qamrab oladi.[5]

Buni foydali qilish uchun virtualizatsiya, FreeBSD konsepsiyasini kengaytirdi va uning 4.0 versiyasida 2000 yilda qamoq buyruq.[6]

2002 yilga kelib, Nikolas Boiteux tomonidan yozilgan maqolada Linuxda qanday qilib qamoqxonani yaratish haqida hikoya qilingan [7]

2003 yilga kelib, Linux qamoqxonalari bo'lgan birinchi Internet-mikroservis provayderlari SAAS / PAAS (qobiq konteynerlari, proksi-server, ircd, botlar, ...) xizmatlari bilan qamoqxonaga foydalanish uchun hisob-kitoblarni taqdim etadilar.[8]

2005 yilga kelib, Quyosh ozod qilindi Solaris konteynerlari (shuningdek, Solaris zonalari deb ham ataladi), "steroidlarga chroot" deb ta'riflangan.[9]

2008 yilga kelib, LXC (ustiga Docker keyinchalik qurilgan) "konteyner" terminologiyasini qabul qildi[10] tarkibiga kiritilganligi sababli 2013 yilda mashhurlikka erishdi Linux yadrosi 3.8 ning foydalanuvchi nomlari.[11]

Foydalanadi

Chroot muhiti alohida yaratish va joylashtirish uchun ishlatilishi mumkin virtualizatsiya qilingan dasturiy ta'minot tizimining nusxasi. Bu quyidagilar uchun foydali bo'lishi mumkin:

Sinov va ishlab chiqish
Dasturiy ta'minot uchun xrootda ishlab chiqarish tizimiga joylashtirish uchun juda xavfli bo'lgan sinov muhiti o'rnatilishi mumkin.
Qarama-qarshilikni nazorat qilish
Dasturni faqat kutilgan bog'liqliklar bilan to'ldirilgan xrootda ishlab chiqish, qurish va sinovdan o'tkazish mumkin. Bu dasturchilarning turli xil kutubxonalar to'plamlari bilan loyihalarni qurish natijasida kelib chiqadigan ba'zi bir bog'lanishning oldini olish mumkin.
Moslik
Eski dastur yoki boshqasini ishlatadigan dastur ABI ba'zan chroot-da ishlatilishi kerak, chunki ularni qo'llab-quvvatlaydigan kutubxonalar yoki ma'lumotlar fayllari aks holda nom yoki xost tizimiga bog'lanishlari mumkin.
Qayta tiklash
Agar tizimni qayta tiklab bo'lmaydigan qilib ko'rsatilsa, muqobil ildiz fayl tizimidan (masalan, o'rnatish vositalaridan yoki) yuklashdan so'ng buzilgan muhitga qaytish uchun chroot ishlatilishi mumkin. Jonli CD ).
Imtiyozlarni ajratish
Dasturlarni ochiq o'tkazishga ruxsat beriladi fayl tavsiflovchilari (fayllar uchun, quvurlar va tarmoq ulanishlarini) chroot-ga joylashtiring, bu esa xroot katalogida ishlaydigan fayllarni qoldirishning hojati yo'qligi sababli qamoqxona dizaynini soddalashtiradi. Bu, shuningdek, xavfsizlikni buzishni oldini olish uchun imtiyozli dasturning potentsial zaif qismlarini qum maydonida ishlashning umumiy tartibini soddalashtiradi. Shuni esda tutingki, chroot root huquqlariga ega bo'lgan jarayonni o'z ichiga olishi shart emas.

Cheklovlar

Chroot mexanizmi imtiyozli (root) foydalanuvchilar tomonidan qasddan buzilishlardan himoya qilish uchun mo'ljallanmagan. Ko'pgina tizimlarda chroot kontekstlari to'g'ri to'planmaydi va etarli imtiyozlarga ega bo'lgan xrootlangan dasturlar bajarishi mumkin ikkinchi chroot buzmoq. Xavfsizlikning ushbu zaifligi xavfini kamaytirish uchun chrootlangan dasturlar buzilgandan so'ng darhol dasturiy ta'minotdan yoki boshqa mexanizmlardan voz kechishlari kerak. FreeBSD qamoqxonalari - o'rniga ishlatilishi kerak. Kabi ba'zi tizimlar, masalan FreeBSD, ikkinchi chroot hujumini oldini olish uchun ehtiyot choralarini ko'ring.[12]

Oddiy fayl tizimlarida qurilmalar tugunlarini qo'llab-quvvatlaydigan tizimlarda xrootlangan root foydalanuvchisi hali ham qurilma tugunlarini yaratishi va ularga fayl tizimlarini o'rnatishi mumkin; Shunday qilib, chroot mexanizmi o'z-o'zidan imtiyozli foydalanuvchilar tomonidan tizim qurilmalariga past darajadagi kirishni blokirovka qilish uchun ishlatilishi mo'ljallanmagan. Kabi manbalardan foydalanishni cheklash uchun mo'ljallanmagan I / O, tarmoqli kengligi, disk maydoni yoki protsessor vaqti. Ko'pgina Unixlar to'liq fayl tizimiga yo'naltirilgan emas va tarmoq kabi buzilishi mumkin bo'lgan funktsiyalarni qoldiradi jarayonni boshqarish chrooted dasturga tizim qo'ng'iroqlari interfeysi orqali mavjud.

Ishga tushganda, dasturlar topishni kutadi tirnalgan joy, konfiguratsiya fayllari, qurilma tugunlari va umumiy kutubxonalar oldindan belgilangan ba'zi joylarda. Chrootlangan dastur muvaffaqiyatli ishga tushishi uchun xroot katalogida ushbu fayllarning minimal to'plami bo'lishi kerak. Bu chrootdan umumiy qum qutisi mexanizmi sifatida foydalanishni qiyinlashtirishi mumkin.

Faqat root foydalanuvchisi chrootni amalga oshirishi mumkin. Bu foydalanuvchilarga a qo'yilishini oldini olish uchun mo'ljallangan setuid maxsus tayyorlangan xroot qamoqxonasidagi dastur (masalan, soxta bilan) / etc / passwd va / etc / shadow faylini) imtiyozlarning kuchayishi.

Ba'zi Unixes ushbu cheklovlarning hech bo'lmaganda bir qismini hal qilish uchun xroot mexanizmining kengaytmalarini taklif qiladi (qarang Operatsion tizim darajasidagi virtualizatsiya texnologiyasini amalga oshirish ).

Chroot-dagi grafik dasturlar

Quyidagi usullardan foydalangan holda xronlangan muhitda grafik dasturlarni ishga tushirish mumkin.[13][14]

  • Foydalanish xhost (yoki .Xauthority-dan sirni nusxalash)
  • Ichki X serverlari yoqadi Xnest yoki zamonaviyroq Xefir (yoki qamoqxonadan haqiqiy X serverini ishga tushiring)
  • Chroot-ga kirish SSH X11 yo'naltirish (ssh -X) xususiyatidan foydalangan holda
  • xchroot foydalanuvchilar uchun kengaytirilgan chroot versiyasi va Xorg / X11 yo'naltirish (socat / mount)
  • X11 VNC server va ulanish a VNC atrof-muhitdan tashqarida mijoz.

Taniqli dasturlar

The Postfiks pochta uzatish agenti alohida-alohida chrootlangan yordamchi dasturlarning quvuri sifatida ishlaydi.

O'zidan oldingi 4.2BSD singari, Debian va Ubuntu ichki paketlarni ishlab chiqaradigan fermer xo'jaliklari paketlar o'rtasida istalmagan ravishda bog'liqliklarni ushlab turish uchun xrootlardan keng foydalanadilar. SUSE shunga o'xshash usuldan foydalanadi qurmoq dastur. Fedora, Red Hat va RPM-ga asoslangan turli xil tarqatmalar barchasini yaratadi RPM kabi chroot vositasidan foydalanish masxara qilish.

Ko'pchilik FTP-serverlar POSIX tizimlari uchun ishonchsiz FTP mijozlarini sandboxga o'rnatish uchun chroot mexanizmidan foydalaning. Buni kiruvchi ulanishni boshqarish uchun jarayonni biriktirish, so'ngra bolani chrootlash orqali amalga oshirish mumkin (dasturni ishga tushirish uchun zarur bo'lgan kutubxonalar bilan xrootni to'ldirishdan saqlanish uchun).

Agar imtiyozlarni ajratish yoqilgan bo'lsa, OpenSSH daemon har bir mijoz uchun autentifikatsiyadan oldingi tarmoq trafigini boshqarish uchun imtiyozsiz yordam jarayonini bo'sh katalogga kiritadi. Shuningdek, demon SFTP va qobiq seanslarini chroot-da (4.9p1 versiyasidan boshlab) sandbox-ga o'tkazishi mumkin.[15]

Chrome OS yordamida Linux nusxasini ishlatish uchun chroot-dan foydalanishi mumkin Kruton,[16] aks holda ingichka operatsion tizimni apparat resurslaridan foydalanish imkoniyatini ta'minlash. Ushbu maqolada keltirilgan xavfsizlik nuqtai nazarlari bu erda qo'llaniladi.

Linux xost yadrosi virtual fayl tizimlari va konfiguratsiya fayllari

Linuxda funktsional xroot muhitiga ega bo'lish uchun, yadro virtual fayl tizimlari va konfiguratsiya fayllari xostdan xrootga o'rnatilishi / nusxalanishi kerak.

# Mount Kernel virtual fayl tizimlariTARGETDIR="/ mnt / chroot"mount -t proc proc $ TARGETDIR/ procmount -t sysfs sysfs $ TARGETDIR/ sysmount -t devtmpfs devtmpfs $ TARGETDIR/ devmount -t tmpfs tmpfs $ TARGETDIR/ dev / shmmount -t devtlarni devt qiladi $ TARGETDIR/ dev / pts# Nusxa ko'chirish / etc / xostlar/ bin / cp -f / etc / hosts $ TARGETDIR/va boshqalar/# Nusxalash /etc/resolv.conf / bin / cp -f /etc/resolv.conf $ TARGETDIR/etc/resolv.conf# Link / etc / mtabchroot $ TARGETDIR rm / etc / mtab 2> / dev / null chroot $ TARGETDIR ln -s / proc / mounts / etc / mtab

Shuningdek qarang

Adabiyotlar

  1. ^ "qamoqxona, 9-bo'lim". docs.freebsd.org.
  2. ^ Losh, Warner (2000 yil 2-fevral). "Warnerning tasodifiy xakerlik blogi: qayerda chroot?".
  3. ^ "Biz uchun qolgan ma'lumotlar infratuzilmasi - III - dasturiy ta'minot".
  4. ^ Xesvik, Bill (1991). "Berferd bilan oqshom: unda krakerni jozibasi, chidashi va o'rganishi" (PDF). USENIX yozgi konferentsiyasi materiallari, 1-jild. USENIX. San-Fransisko, Kaliforniya: Assotsiatsiya. p. 163.
  5. ^ Kerol, Fennelli. "Qochib ketgan Chroot". SunWorld Onlayn. Kerol Fennelli. Arxivlandi asl nusxasi 2000-01-09 da.
  6. ^ Riondato, Matteo. "Qamoqxonalar" bo'limining "FreeBSD qo'llanmasi". freebsd.org. FreeBSD loyihasi. Olingan 2018-10-30.
  7. ^ Nikolas, Boiteux. "chroot shell". lycos.fr. Nikolas Boiteux. Arxivlandi asl nusxasi 2002-10-14 yillarda. Olingan 24 mart 2018.
  8. ^ "Girafon". girafon.org. girafon. Arxivlandi asl nusxasi 2004-06-12. Olingan 24 mart 2018.
  9. ^ Shmidt, Klaus (2006-09-02). Yuqori darajadagi mavjudlik va tabiiy ofatlarni tiklash: tushunchalar, dizayn, amalga oshirish. Springer Science & Business Media. p. 186. ISBN  9783540345824. Olingan 2014-08-21.
  10. ^ "SourceForge LXC fayllarini yuklab olish". sourceforge.net. Olingan 2014-08-21.
  11. ^ Rozen, Rami (2014-03-26). "Linux konteynerlari va kelajak buluti" (PDF). Olingan 2014-08-21.
  12. ^ "chroot (2)". www.freebsd.org.
  13. ^ "Development / Howto / Chroot". Mandriva viki. 25 Iyul 2011. Arxivlangan asl nusxasi 2014-03-26.
  14. ^ "Arxivlangan nusxa". Arxivlandi asl nusxasi 2011-08-31. Olingan 2011-10-13.CS1 maint: nom sifatida arxivlangan nusxa (havola)
  15. ^ "sshd_config (5) qo'llanma sahifasi". 2017-10-26. Olingan 2018-02-04.
  16. ^ "Chromium OS Universal Chroot Environment (github-da)". Olingan 2016-12-17.

Tashqi havolalar