Kabuğun Çalışma Prensipleri ve Komutlar-1
- Huseyin Şahan
- 12 Mar
- 4 dakikada okunur
Kabuk sadece etkileşimli bir komut satırı değil aynı zamanda etkileşimli bir programdır. Bu blog yazımızda kabuk türlerini kullanıcıları engelleme, kabuk türlerini değiştirmeyi ve kabuktaki ana işlemleri ve alt işlemleri nasıl görebileceğimizi işleyeceğiz.
Kabuk Türlerini Keşfetme
İşletim sistemi sistemdeki her kullanıcı için varsayılan bir kabuk başlatır. Sistemdeki kullanıcıların kullandığı kabuk tipini bulabilmek için /etc/passwd dosyasındaki 7. alana bakmamız gerekir. Aşağıda /etc/passwd dosyasını terminale bastıran cat komutunu görebilirsiniz.
darkside@debian:~$ cat /etc/passwd
Burada sistemdeki kullanıcıların ve kullanıcı olmasa bile sitemdeki mevcut programların kullandığı kabuk tipini görebilirsiniz. İşte komut çıktısının ekran görüntüsü.

Burada root kullanıcısında /bin/bash yani GNU Bash kabuğu kullanılıyor. Peki, diğer sistem hesapları neden nologin veya false olarak gösteriliyor? Sistem, sizin sistem hesaplarına doğrudan erişmenizi istemez. nologin gibi ifadelerle belirtilen sistem hesapları için kullanıcı girişi gerekmez; bu nedenle bu hesaplara giriş yapılamaz. Ancak bazı sistem hesapları, false olarak belirtilmiş olabilir. Bu durumda, bu kullanıcı hesabına giriş yapmaya çalışsanız bile sizi hemen sistemden atar. Bu genellikle, sisteme erişmesi istenmeyen kullanıcılar veya sistem hesapları için ayarlanır.
Şimdi ise sistemde bir kullanıcı hesabı oluşturalım ve ilk önce GNU Bash kabuğunu daha sonrada kabuğu false olarak ayarlayalım ve sistemde kullanıcının oturum açmasını engelleyelim.
Kullanıcı Oluşturma Ve Parola Atama
Aşağıdaki komut ile bir usertest kullanıcısı oluşturalım. Bunun için useradd ve passwd komutlarını kullanacağız. İlk olarak useradd ile bir test kullanıcısı oluşturun. Unutmayın bu işlemleri root olarak yapmalısınız!!
root@debian:~# useradd -m usertest
Burada -m komutu ile kullanıcının ana dizinini oluşturduk bu /home/usertest dizini olacaktır.Ancak henüz bir parola oluşturmadık.Varsayılan olarak parolanın olmadığını /etc/shadow dosyasını okuyarak görebilirsiniz
root@debian:~# cat /etc/shadow
Çıktıda şu gibi ifade göreceğiz:
usertest:!:20159:0:99999:7:::
Burada 2. satırdaki ! işareti henüz parola yok anlamına gelecektir.
Tamam artık parola ekleyelim. Parola eklemek için passwd komutunu kullanalım.
root@debian:~# passwd usertest
Bu komutu girdiğimizde sizden yeni parola isteyecek ve artık kullanıcımızın parolası hazır hale geldi istediğimiz gibi terminal girişi yapabiliriz. Parolanın var olduğunu yine /etc/shadow dosyasını kullanarak görebiliriz. Daha önce ünlem vardı ama artık parolamızın hash bilgisini gösterecek.
usertest:$y$j9T$TYb0vICZ6bRHsJRvMcwdp.$fpW30k7.LOKwCgk3o5e5cwkvTaWpcbmsqqiPAhW49x4:20159:0:99999:7:::
Görüldüğü gibi 2. satırda bizim yeni girdiğimiz hash bilgisi yer alacaktır.
Kabuk Türleri ve Kabuk Değiştirme
Artık yeni kullanıcımızın ne tür bir kabuk türü kullandığını görelim. Bunu görmek için /etc/passwd dosyasına bakın. İşte kullanıcımızın kullandığı kabuk türü
usertest:x:1002:1002::/home/usertest:/bin/sh
sh türünde bir kabukmuş.Biz bunu istediğimiz gibi değiştirebilir yada kullanıcının oturum açmasını engelleyebiliriz. Şimdi basit olarak kabuk türlerini ve yasakları görelim:
/usr/sbin/nologin:
Kullanıcı, sisteme giriş yapmaya çalıştığında, "This account is currently not available" gibi bir mesajla karşılaşır ve hemen çıkartılır. Giriş yapamaz.
Yaygın olarak sistem hesapları için kullanılır.
/bin/false:
Kullanıcı sisteme giriş yapmaya çalıştığında, shell hemen çalıştırılır ve işlem sonlandırılır. Kullanıcıya hiçbir işlem yapılmaz.
Genellikle sistem hesapları veya giriş yapılması istenmeyen kullanıcılar için kullanılır.
* (veya !!):
Bu da aynı şekilde parola olmayan veya kilitli hesapları belirtir. Bu durumda kullanıcı giriş yapamaz çünkü geçerli bir parola yoktur.
/bin/bash:
GNU Bash Shell, Linux sistemlerinde yaygın olarak kullanılan bir kabuktur. Hem kullanıcılar hem de sistem yöneticileri için popüler bir shell'dir.
/bin/sh:
Bu, Bourne Shell olarak bilinen kabuktur. Çoğu zaman, sistemde bir kabuk olarak Bash tarafından sağlanan özellikleri içerir. Özellikle eski sistemlerde veya daha basit bir shell'e ihtiyaç duyulan yerlerde kullanılır.
/bin/zsh:
Z Shell, genellikle Bash'a alternatif olarak kullanılan bir shell'dir. Çok sayıda özellik ve özelleştirme seçeneği sunar. Kullanıcılar, Bash yerine Zsh'yi tercih edebilirler.
/bin/dash:
Dash (Debian Almış Shell), daha hızlı ve hafif bir shell'dir. Genellikle /bin/sh olarak sembolize edilir ve sistem komutlarının hızlı bir şekilde çalıştırılması için kullanılır.
/bin/fish:
Friendly Interactive SHell, kullanıcı dostu ve modern bir kabuktur. Bash’a göre daha sezgisel bir sözdizimi sunar ve gelişmiş özelliklere sahiptir.
/usr/bin/ksh:
Korn Shell, Unix tabanlı sistemlerde kullanılan bir kabuktur ve bazı Linux dağıtımlarında kullanılabilir. Bash'a benzer şekilde komutlar yazabilir, ancak bazı ek özelliklere sahiptir.
Tamam şimdi kabuk türlerine ve yasaklı kabuklara göz gezdirdiyseniz bizim usertest adlı kullanıcımızın kabuğunu değiştirelim.Kullanıcı kabuğunu bash kabuğu , nologin ve false olarak değiştirelim.Burada işlemleri chsh komutu ile yapacağız.
root@debian:~# chsh -s /bin/bash usertest
Burada kök yetkilerimiz ile usertest kullanıcısının kabuğunu değiştirdik.Eğer bu değişikliği göremek isterseniz /etc/passwd dosyasını okuyun.İşte çıktı:
usertest:x:1002:1002::/home/usertest:/bin/bash
Daha önce /bin/sh olan kabuk şimdi /bin/bash olarak değişti.Artık kabukta usertest olarak oturum açalım.Bunun için:
darkside@debian:/$ su usertest
Sizden parola isteyecektir.Daha önce belirlediğimiz parolayı girelim.Başarıyla giriş yapacaktır.
Ancak artık diyelimki bu kullanıcının giriş yapmasını istemiyorsunuz.Bunu için kabuk tipini /usr/sbin/nologin ve /bin/false olarak ayarlayalım.
root@debian:~# chsh -s /usr/sbin/nologin usertest
Artık kullanıcının kabuğunu ayarladık.İsterseniz /etc/passwd dosyasına bakarak görelim.
usertest:x:1002:1002::/home/usertest:/usr/sbin/nologin
Artık giriş yapmayı deneyelim bakalım yapabiliyor muyuz ?
darkside@debian:/$ su usertest

İşte artık kullanıcı hesaba erişimini kaybetti.Bu sayede sevmediğiniz kişilerin sisteme erişimini engelleyebilirsiniz.Örneğin /bin/false olarak ayarlayalım.Bu sefer hiçbir bildirim vermeden erişim vermeyecek.Eğer engellediğiniz kullanıcının bu durumdan haberi olmasın istiyorsanız kullanabilirsiniz.
root@debian:~# chsh -s /bin/false usertest
Burada yine /etc/passwd dosyasından değişikliği kontrol edin.
usertest:x:1002:1002::/home/usertest:/bin/false
Şimdi giriş yapmaya çalışalım:
darkside@debian:/$ su usertest

Bu iki durumdada kullanıcıyı engellemeyi başardık ve sistemde oturum açmasını engelledik.
Kabukta Ana ve Alt İşlemler
Burada ana kabuk ve çocuk kabuk denilen kavramları kısaca özetleyelim.Ana kabuk sizin ilk terminal emülatörünü başlattığınızda oluşan kabuktur.Çocuk kabuk ise bu ana kabuk üzerinde bash komutu gibi komutları girerek oluşturduğunuz kabuktur.Ana kabuk ve çocuk kabukları görebilmek için aşağıdaki ps komutunu kullanabiliriz.
darkside@debian:~$ ps -f
İşte komutumuzun çıktısı ve yorumlaması:

Burada PID ve PPID değerlerine bakarak bunları yorumlayabiliriz.PID kabuğun işlem ID'si ve PPID ise ebeveyn işlem ID'si olalcaktır.mesela ps -f komutunun 7282 nolu bir parent işlemi üzerinde çalıştığını görebiliriz çünkü PPID yani Parent ID değeri 7282 olarak görünüyor.Bu PID ve PPID değerlerin ne olduğunu bilmiyorsanız önceki blog yazılarımızı okumanızda fayda var.
Şimdi bulunduğum kabukta bir tane çocuk kabuk oluşturayım:
darkside@debian:~$ bash
İşte yeni bir bash kabuğu bu sayede oluşmuş oldu. Siz istediğiniz türde alt kabuk oluşturabilirsiniz.

Burada yeni oluşturulan PID değeri 7775 olan kabuğa bakın. Bunun Ebeveyn kabuğu 7282 olacaktır. Fark ettiyeniz artık ps -f komutumuz yeni oluşturduğumuz kabuk üzerinde çalıştırılmış. PPID değeri 7775 değerine sahip olmasından bu durumu anladık.
Oluşturduğumuz bu alt kabuğu yok etmek için:
darkside@debian:~$ exit
Komutunu girin ve ps komutu ile tekrardan işlemlere bakın.Çocuk kabuk artık yok oldu.Şimdi başka bir kabuk türü oluşturalım daha iyi anlamak için:
darkside@debian:~$ sh
Bu komut ile sh kabuğuna geçtiniz.Bu kabuk sadece $ işareti bulunan bir kabuktur.

Bu şekilde yeni oluşturduğumuz kabuğuda görebilirsiniz.
Bazen işlemleri incelerken kafanız karışabilir. Daha net bir ana işlem ve çocuk işlemleri görmek için:
darkside@debian:~$ ps --forest
Komutunu girebilirsiniz. İşte komut çıktısı şuna benzedi. Burada birden fazla alt kabuk oluşturduk.

Bu sayede alt işlemler daha rahat bir şekilde görebiliriz.
Eğer geçici işlemler yapmayı ve kabuğu yok etmeyi planlıyorsanız çocuk kabuk oluşturun. İşlemlerinizi bunun üstünden yapabilir ve ana kabuğu meşgul etmezsiniz.
Evet bir blog yazımızın daha sonuna geldik. Anlamadığınız kısım olursa yorumlardan bildirin .Herkese iyi günler...
Comments