it-swarm-tr.com

chroot "jail" - nedir ve nasıl kullanılır?

Linux altında chroot hapishanesi hakkında çok şey duydum/okudum ama daha önce hiç kullanmadım (Fedora'yı günlük kullanıyorum), bu yüzden bir chroot "hapishane" nedir? Ne zaman ve neden kullanabilirim/kullanmayabilirim ve bilmem gereken başka bir şey var mı? Nasıl oluşturacağım?

107
user119

Bir chroot hapishanesi, bir süreci ve çocuklarını sistemin geri kalanından izole etmenin bir yoludur. Yalnızca kök olarak çalışmayan işlemler için kullanılmalıdır, çünkü kök kullanıcılar hapishaneden kolayca kopabilir.

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, kök dizini bu yeni ağacın tabanında olacak şekilde değiştirmek ve bu köklü ortamda çalışan işlemi başlatmak için chroot() sistem çağrısını kullanırsınız. Değiştirilmiş kök dışındaki yollara gerçekten başvuramadığından, bu konumlarda kötü amaçlı işlemler (okuma/yazma vb.) Gerçekleştiremez.

Linux'ta, bağlama bağlarını kullanmak, kök ağacını doldurmanın harika bir yoludur. Bunu kullanarak /lib ve /usr/lib çekmiyorken /usr, Örneğin. Sadece istediğiniz dizin ağaçlarını hapishane dizininde oluşturduğunuz dizinlere bağlayın.

97
Ben Combee

"chroot jail" gerçekten ölmesi gereken bir yanlış adlandırmadır, ancak insanlar kullanmaya devam eder. chroot, dosya sisteminizdeki bir dizini dosya sisteminin kökü olarak simüle etmenizi sağlayan bir araçtır. Bu, aşağıdaki gibi bir klasör yapısına sahip olabileceğiniz anlamına gelir:

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

Eğer sen chroot foo ve ls /, göreceksin:

-- bar
-- baz

ls (ve çalıştırdığınız diğer araçlar) söz konusu olduğunda, bunlar dosya sistemindeki tek dizinlerdir. "Hapishanenin" yanlış adlandırma nedeni chroot = kuvvet simüle edilmiş dosya sisteminde kalacak bir program değildir; bir "hapishanede" olduğunu bilen bir program oldukça kolay bir şekilde kaçabilir, bu nedenle bir programın simüle edilmiş dosya sisteminizin dışındaki dosyaları değiştirmesini önlemek için bir güvenlik önlemi olarak chroot kullanmamalısınız

53
Michael Mrozek

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/alırsa/some-jail /. Ayrıca uygulama/bazı hapishane/kırmak edemez böylece makinenizde başka bir şey erişemez biliyorum. Bu sadece 'size verdiğim şeylere erişebilirsiniz ve sistemdeki başka hiçbir şeye erişemezsiniz.

12
jacksonh

"Ne zaman ve neden kullanabilirim?"

Kullanımlarından biri, mutlak yol referansları yapan komut dosyalarını (önyükleme zamanı ve diğer) test etmek veya bu komutların yapmasını istemeyeceğiniz bir ortamda kesişmek ve günlüğe kaydetmek isteyebileceğiniz komutları (ve belki de çalışmaz) çalıştırmaktır. aslında çalışma ortamınızda çalışır.

Örneğin, Linux çalıştıran gömülü bir cihazım var, a) gerçek cihazda çalıştırmadan bazı masaüstlerinin çalışmasını kontrol etmek istiyorum (masaüstümde daha iyi araçlara sahip olduğum ve cihazı tuğlalamak istemiyorum) b) çalışıyor masaüstümde gerçek (masaüstü sistemimin bozulmasını istemediğim için)

Ayrıca, "chroot jail" de bulunmayan bir komutu veya Shell komut dosyasını çalıştırmaya çalıştığında çalışma bir hata ile çıkacağı için 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 çalışabilir, ancak bu bir VM görüntü vb. - çok daha fazla iş) oluşturmayı içerir

6
MikeW