Inıt Komut Dosyası (Kabuk Betiği) Nedir, Nasıl Kullanılır /jGozluk *Stajyer Asistan Kulübü*

jGozluk

Uzman üye
24 Ağu 2017
1,927
4
Russia
Merhabalar arkadaşlar tekrardan bugünki konumuz birazcık karmaşık olacaktır. Inıt Komut Dosyası (Kabuk Betiği) Nedir ?, Nasıl Kullanılır adlı bir tanıtım olacaktır. İlk olarak kelimelerin anlamlarını açıkliyacağım uzatmadan başliyalım.


JduESU.jpeg


Inıt :


Bilgisayarımızda olan sistemlerde öncelik tanınan ve ilk çalışan uygulamadır.Kendi tabirimizle bütün sistemi kendi üstüne alan bir program.

Kabuk Betiği :

Bir kabuk betiği kabuk komutlarını içeren bir metin dosyasıdır. Bash çağrılırken böyle bir dosya seçenek olmayan ilk argüman olarak verilmişse ve seçenekler arasında -c ve -s seçenekleri, Bash dosyadan okuduğu komutları çalıştırır ve çıkar. Bu tür bir işlemde kullanılan kabuk etkileşimsiz kabuktur. Kabuk dosyayı önce çalıştırıldığı dizinin içinde arar, bulamazsa $PATH içindeki dizinlere bakar.
Bash bir kabuk betiğini çalıştırırken, özel parametre 0'ı kabuğun ismine değil dosya ismine atar ve diğer konumsal parametreler de varsa argümanlara atanır. Olmayan argümanların konumsal parametreleri kaldırılır.
Bir kabuk betiği, chmod komutu ile çalıştırma biti 1 yapılarak çalıştırılabilir yapılabilir. Bash betiğin içindeki komutları $PATH dizinlerinde arar ve bulduğunda bir altkabuk oluşturup onu orada çalıştırır. Başka bir deyişle, dosyaismi bir çalıştırılabilir kabuk betiği ise

THT argumanlar
ile
bash THT argumanlar



Inıt'ta başlangıç :

Inıt açılış anında istediğiniz herhangi bir programın çalışmasını ve çalışmamasını belirler ve bu programlarıda ''/etc/inittab'' dosyasından bulabiliriz. Altta vereceğim ve bir bilgilenme daha yapacağım her satırın sonunda çalışacak uygulama vardır.


Kod:
# Default runlevel.
id:3:initdefault:

# System initialization (runs when system boots).
si:S:sysinit:/etc/rc.d/rc.S

# Script to run when going single user (runlevel 1).
su:1S:wait:/etc/rc.d/rc.K

# Script to run when going multi user.
rc:23456:wait:/etc/rc.d/rc.M

# What to do at the "Three Finger Salute".
ca::ctrlaltdel:/sbin/shutdown -t5 -rfn now

# Runlevel 0 halts the system.
l0:0:wait:/etc/rc.d/rc.0

# Runlevel 6 reboots the system.
l6:6:wait:/etc/rc.d/rc.6

# What to do when power fails (shutdown to single user).
pf::powerfail:/sbin/shutdown -f +5 "THE POWER IS FAILING"

# If power is back before shutdown, cancel the running shutdown.
pg:0123456:powerokwait:/sbin/shutdown -c "THE POWER IS BACK"

# If power comes back in single user mode, return to multi user mode.
ps:S:powerokwait:/sbin/init 5

c1:1235:respawn:/sbin/agetty 38400 tty1 linux
c2:1235:respawn:/sbin/agetty 38400 tty2 linux
c3:1235:respawn:/sbin/agetty 38400 tty3 linux
c4:1235:respawn:/sbin/agetty 38400 tty4 linux
c5:1235:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux

# Serial lines
#s1:12345:respawn:/sbin/agetty 19200 ttyS0 vt100
#s2:12345:respawn:/sbin/agetty 19200 ttyS1 vt100

# Dialup lines
#d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS0 vt100
#d2:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS1 vt100

x1:4:wait:/etc/rc.d/rc.4


Ve bunda bitmiyor tabikide Linux sisteminde belirlenmiş bir kaç tane düzen vardır. Bunlardan üçüsüde şunlardır ; Bir (Tek kullanıcılı konum), Üç (Çok kullanılıcılı konum), Dört (X Pencere konumu)'dur. Her bir konum, bir konum altında çalışırken geçebilmek için kullanılan telinit veya init komutu kullanılır.

Yer alan dosyaımızın klasörünü degiştirebilir ve çalışmasına kadar mod farkındalığı getirebiliriz /etc/inittab dosyasında yer alanları tabikide.



Kod:
# init 1
Switching to runlevel 1
Sending all processes the TERM signal
Waiting for processes to terminate........
Turning off quota..
Single user mode.


Yukarıda belirlediğim konumlardan istediğiniz çalışma düzeyine ait olan sayıyı yazabilir ve açabilirsiniz, Örneğin ; 0 komutu ile sistemi kapatabilirsiniz. Yukarda verdiğim komut çalıştıktan sonra /etc/inittab dosyasında verilen konuma ait olan /etc/rc.d/rc.K dosyası çalıştırılır. Bu dosya çalıştıktan sonra dışarıdan yapılan işlemlere izin verilmez.

/etc/inittab dosyanızda yapacağımız bütün örneklerin sonunda allta vereceğim kodu uygulamanız gereklidir.


Kod:
# init q


komutunu yazdıktan sonra init programının inittab dosyasını tekrar okuyup değişiklerden haber olmasını sağlamalıyız. O an sistemin hangi konumda çalıştığını bulabilmek için altta vereceğim runlevel komutunu kullanacaksınız :

Kod:
$ runlevel
N 3

Ve üste verdiğim komutta üç (Çok kullanıcılı konum) dediğimiz şeyi uyguladık.


SİSTEM AÇILIŞI :



Çekirdek açılış töreninin son halkası olarak init çalıştırıldığı zaman, içinde öntanımlı çalışma seviyesi girdisi olup olmadığını kontrol etmek için /etc/inittab dosyasına bakılır. Bu taıntımta çalışma seviyesi, sistem açılış sonrası düşülecek çalışma seviyesini belirtir. Bu tür bir girdi yok ise /eto/inittab dosyası yok ise yani, konsoldan bir çalışma seviyesi gireceğiz birlikte.

Ve sonradan çalışma seviyeleri s(büyük) s(küçük), sistemi tek kullanıcı kipe sokar en başta anlattığım konumdaki yani ve /etc/initap dosyasına ihtiyaç duymaz. Tek kullanıcılı kipte ise, /dev/console üzerinde bir root kullanıcı kabuğu açılır.

Bir (Tek kullanıcılı konum)'a girdikten sonra, init konsulun ioctl durumunu /etc/ioctl.save dosyasında okur ve bunu tekrarlar eğer bu dosya olmazsa, init hattı 9600 baud ve CLOCAL ile ilklendirir. Inıt tek kullanıcılı konum'u terk ederken konsulun ioctl ayarlını yine bu dosya kaydeder /etc/initab yani. Böylece tekrar tek kullancılı konum'a geçildiği zaman ayarları kullanabilirsiniz.

Üç (Çok kullanıcılı konum), ilk girişimizde kullanıcılar bağlanmadan önce dosya sisteminin bağlanmasını sağlayabilmek için boot veya bootwait kodları init trafından çalıştırılır. Ve ondan sonra çalışma seviyesiyle eşleten bütün kodları çalıştırabiliriz.

Yeni bir sisteme başlarken, init ilk olarak /etc/initscript dosyasının olduğunu veya çalıştığını kontrol eden kod'tur. Eğer böyle bir kod çalışığ var ise belirlediğiniz süreçleri başlatmak için kullanabilirsiniz tabikide.

Ve son işlemimiz olan her işleminiz bittikten sonra tekrardan kontrol etmemiz gerekiyor /var/run/utmp ve /var/log/wtmp yazılır sonradan çıkan sonuçlarda görebilirsiniz.


ÇALIŞMA SEVİYELERİNİN DEĞİŞTİRİLMESİ:


Oluşan bu zamana kadar oluşturduğumuz süreçler çalıştıktan sonra seviyelerini degiştirmeyi öğredeceğim, iinit kendi oluşturduğu bir süreçin son bulması için, Bir enerji kesme sinayalinin veya telinit tarafından gönderilen bir çalışma seviyesi değiştirme sinyalinin gelmesini bekliyeceğiz. Eğer vereceğim üç durumdan herhangi birisi gerçekleşirse /etc/inittab dosyasını tekrar kontrol etmemizi sağlar. Kullandığınız dosyaya eklediğiniz veya yüklediğiniz,bundan sonrada init bunlardan birinin gerçekleşmesi için belirli bir şekilde bekler. Durumlara anında karşılık verebilmesi için ; Elinit'in Q veya q komutu ile init’in /etc/inittab dosyasını tekrar kontrol etmesi sağlanabilir.init tek kullanıcılı kipte değilse ve bir enerji kesme sinyali alırsa (SIGPWR), gidip /etc/powerstatus dosyasını okur. Ve altta vereceğim komutlardan istediğinizi uygulayıp işleme başliyabilirsiniz.

F(AIL)
Enerji KGK tarafından sağlanıyordur ve bir süre sonra enerji kesilecektir. powerwait ve powerfail girdileri çalıştırılır.
O(K)
Enerji tekrar gelmiştir. powerokwait girdisi çalıştırılır.
L(OW)
KGK'nın akülerindeki enerji azalmaktadır ve enerji kesilecektir. Powerfailnow girdisi çalıştırılır.

Eğer olurda böyle bir şey olmazsa, etc/powerstatus yok ise veya F, O veya L harflerinden farklı bir şey ihtiva ediyorsa, init, F harfini okuduğunu kabul eder ve ona göre davranır.

SIGPWR ve /etc/powerstatus kullanımı tavsiye etmiyorum size çünkü daha iyisini öğreteceğim. İnit ile etkileşimli kipe geçmek istiyorsanız eğer /dev/initctl'kodunu kullanmanız uygun olacaktır. Çalışma seviyesi değiştirmek isterseniz eğer çalışır haldeyken init'e iletince: İnit yeni seviyede tanımlanmamış olan bütün süreçlere SIGTERM uyarısını gönderir hemen. Ve ardından bu süreçler bitmeden önce 10 saniye bekleriz ardından sonrada 5 saniye sonrada SIGKILL durumunu gönderir. Bunların seviyesine göre değişir uzunlukları


AÇILIŞ SEÇENEKLERİ :


Açılış esnasında init'e seçenekler girilebilir (LILO içinden). init şu seçenekleri kabul eder:
-s, S, single
Tek kullanıcı kipinde açılış. Bu kipte /etc/inittab dosyası incelenir ve açılış rc betikleri, tek kullanıcılı kip kabuğu başlatılmadan önce çalıştırılır.
1-5
Açılış sonrası girilecek çalışma seviyesini belirtir.
-b, emergency
Herhangi bir açılış betiğini çalıştırmadan doğrudan tek kullanıcılı kip kabuğuna düşer.
-a, auto
Çekirdek, kullanıcının müdahalesine gerek kalmadan öntanımlı komut satırı ile yüklenmişse, LILO önyükleyicisi komut satırına "auto" sözcüğünü ekler. Şayet bu bulunursa, init AUTOBOOT ortam değişkenine "yes" değerini atar. Bunu bir güvenlik ölçüsü olarak kullanamayacağınızı unutmayın, çünkü kullanıcı komut satırını kendi de tanımlayabilir.
-z xxx
-z’ye verilen argüman yok sayılır. Bu seçeneği komut satırını biraz daha genişletmek için kullanabilirsiniz, böylece yığıt içinde daha fazla yer kaplaması sağlanmış olur. init komut satırını büyük bir ustalıkla yönetir, böylece ps(1) geçerli çalışma seviyesini gösterebilir.


Konum bitmiştir resim eksikligi olmuştur sonradan eklenecektir. Kısa zamanda yazdığımdan dolayı iyi günler dilerim

Örnek aldığım kaynaklar ; init Init Deamon
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.