Linux neden 'init = / bin / bash' işlevine izin veriyor?


51

Yakın zamanda öğleden önce GRUB'u düzenlersem ve rw init=/bin/bashsonunda bir kök kabuğuyla ekledim.

Herşeyi anlamak istediğim bir durumda olmak, bunun neden olduğunu bilmek istiyorum. Yani bu bir böcek mi? bu bir özellik mi? bir bilgisayara fiziksel erişiminiz varsa, işleri gidermek için yöneticilerin işleri düzeltmesine yardımcı olmak için orada mı?

GRUB veya asıl çekirdek tarafından mı sağlanıyor?


12
Bunu "düzeltmek" istiyorsanız, GRUB'u ve BIOS'unuzu bir parola ile kilitleyin ve ilk önce sabit diskinizi önyükleme sırasına yerleştirin. Başka birinin fiziksel erişimi varsa ve (şifrelenmemiş) sabit diski başka bir bilgisayara koyabilirse, yine de kaybettiniz
jofel

Yanıtlar:


44

Bu bir özelliktir ve sistemin bakımı için kullanılır: sysadmin'in bir sistemi bozuk başlatma dosyalarından kurtarmasına veya unutulmuş bir şifreyi değiştirmesine olanak sağlar.

Red Hat posta listesindeki bu yazı bazı şeyleri açıklar:

Unix benzeri sistemlerde, init, çalıştırılacak ilk işlemdir ve tüm işlemlerin nihai atasıdır. Tüm başlangıç ​​komut dosyalarını çalıştırmaktan sorumludur.

Linux çekirdeğine sistem init yerine init olarak / bin / bash komutunu çalıştırmasını söylüyorsunuz. [...]

Böylece, hiçbir şeyi sömürmüyorsun, sadece standart bir çekirdek özelliğini kullanıyorsun.

Ayrıca, bir yorumda belirtildiği gibi, rwbayrak ayrıdır init=, sadece sisteme kök dosya sistemini okuma yazma olarak bağlamasını söyler (örneğin yanlış yapılandırılmış dosyayı düzenleyebilir veya bir şifreyi değiştirebilirsiniz).


2
Ayrıca, rwtamamen ayrı init=. İlki, çekirdeğe kök dosya sistemini okuma-yazma yapmasını söyler.
Alexios

19

Sisteminizde çalıştırma ve hata ayıklama mekanizmaları var (init parametresi gibi) ve muhtemelen istenmeyen kullanıcıların bunlardan yararlanmasını engelleyen güvenlik mekanizmaları vardır. Bunlar özellikler değil böceklerdir.

İşletim sistemini başlatmaktan bootloader sorumludur. İşletim sistemi güvenliği açıkçası bu noktada geçerli değil. Sadece farklı bir çekirdek, initrd, root fs yükleyebilir veya farklı seçenekler ayarlayabilirsiniz (init yolu gibi). Kullanıcıların bunu yapmasını engellemek istiyorsanız, önyükleyicide yapılması gerekir.

Sisteminiz (muhtemelen bir PC, yani BIOS) önyükleyiciyi yükler ve açıkçası, önyükleyici güvenliği buna uygulanmaz. Kullanıcıların bios önyüklemesini USB'den yapmalarını engellemek istiyorsanız, bunu o seviyede yapmanız gerekir.

Sisteminiz bir yerde bir masada olabilir. Kullanıcıların bilgisayarı açmasını ve hdd'yi kendi aygıtlarından birine değiştirmesini veya makinelerine monte etmek için sürücüyü çıkarmasını durdurmak istiyorsanız, fiziksel düzeyde yapmanız gerekir. Ve onların tüm masayı almalarını ve kaçış minibüslerinden uzaklaşmalarını engellemeyecek ...

Güvenlik budur. Filler bütün yol boyunca.


Güzel özeti. Kamyonete karşı olası bir cevap olarak, buna hdd şifreleme eklemek isteyebilirsiniz.
MvG

11

Bilgisayar başladığında, genellikle /bin/initya da bulunan "init" adlı bir program çalıştırır /sbin/init. Bu program tüm sistemlerin başlatılmasından ve kullanılabilir bir ortam yaratılmasından sorumludur.

Belirtme init=/bin/bash, çekirdeğe çalışmasını söyler /bin/bash(bu bir kabuktur). Belirtme rw, çekirdeğe, salt okunur mod yerine salt okunur modda sabit diskle önyükleme yapmasını söyler. Geleneksel olarak çekirdek, salt okunur modda diskle başlar ve daha sonraki bir işlem, okuma-yazmaya geçmeden önce diskin bütünlüğünü kontrol eder.


6

Biraradaydı kernel.org :

KNL     Is a kernel start-up parameter.

init=   [KNL]
        Format: <full_path>
        Run specified binary instead of /sbin/init as init
        process.

rw      [KNL] Mount root device read-write on boot

1

Bu, çekirdeğin bir özelliğidir: “arayan” ını, yani bagaj yükleyiciyi, büyük esnekliği sağlar. Grub, önyükleme yaparken bu esnekliği kullanmak için araçlar sağlar, ancak aynı zamanda bu tür kurcalamayı kısıtlama araçları da sağlar . Bu, yetkisiz kullanıcıların önyükleme işlemini gerçekleştirebileceği durumlarda, ancak sabit sürücünün kendisine erişiminin engellendiği durumlarda özel bir anlam ifade eder.


1

init=herhangi bir yürütülebilir dosyayı alabilir

init=kabuk komut dosyaları dahil olmak üzere herhangi bir yürütülebilir dosyayı alabilir .

Burada örneğin, keyfi bir minimal C derlemesinin nasıl oluşturulduğunu gösteriyoruminit : Sadece bir programı ve başka bir şeyi çalıştıran özel bir Linux dağıtımı nasıl oluşturulur?

Öyleyse neden olur değil kabul /bin/bashsıradan bir yürütülebilir, her şeye, ve, ve aslında yararlı olabilir? :-)

Daha sonra, initsystemd veya Busybox 'gibi takaslarınızla olan değiş tokuşun ne olacağını anlamaya çalışmalısınız.

Temel olarak, bir ham ile /bin/bash, sen:

İş kontrolü busybox' init geri yüklenebilir ve benzeri diğer lider ile inits -içinde inittab:

tty3::respawn:-/bin/sh

inittabOturum açma kullanan ve Ctrl + D yaparsanız kabuklarını yumurtlayan normal girişler:

::respawn:/sbin/getty -L ttyS0 0 vt100

hangi gettyyürütülebilir dosyayı kullanır , ancak TODO: Busybox init: getty komut satırından başkasına bu olmadan kendimi yumurtlayamadım ?

Sen kullanabilirsiniz Bu kurulumu onunla uğraşmak ve yukarıdaki sonuçlara ulaşabilir.

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.