chroot “hapis” - nedir ve nasıl kullanırım?


99

Linux altındaki chroot hapishanesi hakkında çok şey duydum / okudum fakat daha önce hiç kullanmadım (Fedora'yı günlük kullanıyorum), peki chroot "hapishane" nedir? Ne zaman ve neden kullanıp kullanabilirim ve bilmem gereken başka bir şey var mı? Bir tane yaratmaya nasıl giderim?

chroot 

Buradaki cevaplar "kategoriyi nasıl kullanırım?" :(
Alexander Mills

Yanıtlar:


87

Chroot hapishanesi, bir süreci ve çocuklarını sistemin geri kalanından izole etmenin bir yoludur. Kök kullanıcıları hapisten çok kolay bir şekilde ayrılabildiklerinden, yalnızca kök olarak çalışmayan işlemler için kullanılmalıdır.

Buradaki fikir, bir işlemin çalışması için gereken tüm sistem dosyalarını kopyaladığınız veya bağladığınız bir dizin ağacı oluşturmanızdır. Daha sonra chroot()bu yeni ağacın tabanında yer alacak kök dizini değiştirmek için sistem çağrısını kullanın ve bu chroot'd ortamında çalışan işlemi başlatın. Değiştirilmiş kök dışındaki yollara referans veremediğinden, bu konumlarda kötü amaçlı işlemler (okuma / yazma vb.) Gerçekleştiremez.

Linux'ta, bağlama bağlarını kullanmak, chroot ağacını doldurmak için harika bir yoldur. Eğer gibi klasörlerde çekebilir, o Kullanılması /libve /usr/libçekerek değil iken /usr, örneğin. Sadece hapishane dizininde oluşturduğunuz dizinleri istediğiniz dizin ağaçlarına bağlayın.


10
Cevabınız harika. Yine de söylenecek bir şey var, chroot güvenli bir mekanizma değildir (kökleşirse ve bazen olmasa bile bir süreç hapishaneden çıkabilir). Gerçek hapishaneler, freebsd hapishaneler ve benzerleriyle zorlanabilir. Bu en.wikipedia.org/wiki/FreeBSD_jail#Similar_technologies
nc3b 10:30

3
Gentoo kurulum işlemi chroot kullanıyor, böylece yeni işletim sisteminizi GRUB ve Linux çekirdeği vb.
Yüklemeden

3
Bir göz atın firejail tüm Linux ad alanlarını kullanarak tam bir hapisteki kabuk. Deb ve rpm paketleri mevcut. Genellikle, nedeniyle bilinen bir probleme, daha sonra, gerçi çekirdek 3.18 veya öneriyoruz kullanıcı yönetimi yeni yazılım yüklemek veya yapmak mümkün olmayan zaman firejailçalışıyor.
CivFan

Harika cevap! - bazı temel örnekler görmek güzel olurdu.
Gabriel Staples

Chroot hapishanesi altındaki bir kullanıcı, altında bulunan ikili dosyaları /binroot kullanıcısı tarafından yüklendirebilir mi? @Ben Combee
alper

50

"chroot hapis" gerçekten ölmesi gereken bir yanlış isim, ancak insanlar onu kullanmaya devam ediyor. chrootdosya sisteminizde bir dizini dosya sisteminin kökü olarak simüle etmenize olanak sağlayan bir araçtır. Bu, şöyle bir klasör yapısına sahip olabileceğiniz anlamına gelir:

-- foo
    -- bar
    -- baz
-- bazz

Siz chroot foove yaparsanız ls /, göreceksiniz:

-- bar
-- baz

Bildiğim kadarıyla ls(ve çalıştırmak başka araçlar) endişe, bu dosya sistemi üzerinde sadece dizinleri vardır. “Hapis” in bir yanlış isim olması sebebi chroot, bir programı bu benzetilmiş dosya sisteminde kalmaya zorlamak için tasarlanmamıştır ; chroot "hapishanede" olduğunu bilen bir program oldukça kolay bir şekilde kaçabilir, bu nedenle chrootbir programın simüle edilmiş dosya sisteminizin dışındaki dosyaları değiştirmesini önlemek için bir güvenlik önlemi olarak kullanmamalısınız


16
Bir chroot"hapishaneden" nasıl kaçılacağına dair bir örnek olması yararlı olacaktır . Gördüğüm vaka kök ayrıcalıkları tırmanan gerektirir. Kök ayrıcalıklara yükselen bir sürecin önlenmesi zor mudur?
CivFan

4
Hala “hapsetme” yani "hapishane" iyi bir kestirme. "Seviye 3 çevreleme alanı" daha iyi olur mu?
MikeW

4
Bu terim FreeBSD hapishanelerinden geliyor. Hapishaneler chroot üzerine kuruludur. Hapishanelerin güvenlik sorunlarını çözmesi amaçlanmamıştır chroot. Bu nedenle insanlar genellikle karıştırmak chrootve jailsaynı anlamda. Yapmazlar. "Hapishane" teriminin Bill Cheswick tarafından bir krakeri yakalamak için bir bal küpü oluşturduğu söylenir
BugHunterUK

chroot jailBir şey var mı , benim durumumda iyi bir fikir kullanmıyor mu?
Shafizadeh

10

Temel olarak sadece ortamınızın kök dizinini değiştiriyorsunuz. Yani

/

olur

/some-jail/ (or whatever directory you want)

Bir uygulama eriştiğinde / onu alır / biraz hapis /. Ayrıca uygulama / bazı hapishanelerin dışına çıkamaz, bu yüzden makinenizdeki hiçbir şeye erişemeyeceğini bilirsiniz. Bu, 'hey, yalnızca size verdiğim şeylere erişebilir ve sistemdeki hiçbir şeye erişemezsiniz' demenin çok basit bir yoludur.


6

“Ne zaman ve neden kullanabilirim?”

Bir kullanım, mutlak yol referansları yapan komutları (önyükleme zamanı ve başkaları) veya engellemek ve günlüğe kaydetmek isteyebileceğiniz komutları çalıştıran (ve belki de çalışmayan) komutları test etmektir. Aslında koşu ortamınızda çalışır.

Örneğin, Linux çalıştıran gömülü bir cihaza sahibim, bazı bashların çalışmasını kontrol etmek istiyorum. A) gerçek cihazda çalıştırıyorum (çünkü masaüstümde daha iyi araçlar var ve cihazı yapmak istemiyorum) b) çalışıyor masaüstümde gerçek (masaüstü sistemimin berbat olmasını istemediğim için)

Ek olarak, "chroot hapishanesinde" bulunmayan bir komut veya kabuk betiği çalıştırmayı denediğinde çalışma bir hatayla çıkacağından, hangi komutların veya diğer komut dosyalarının kullanıldığını keşfedebilirsiniz.

(Tabii ki, tüm domuz gitmek için, QEMU veya Docker veya bir VM içinde koşabilir, ancak bu bir VM görüntüsü oluşturma vs. içerir - çok daha fazla iş)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.