Kullanıcı Kabuğu

Kullanıcı oturum açtığı anda kullanıcının varsayılan kabuk uygulaması (shell) başlatılır.

Bu varsayılan kobuk konumu /etc/passwd dosyasında belirtilmiştir.

pingu:x:1000:1000::/data/user/pingu:/bin/ash

Burada /bin/ash kabuk konumudur.

Kabuğu değiştirme

Öncelikle değiştirmek istediğiniz kabuğun konumunu /etc/shells içerisine eklemeniz gerekmektedir. Bu işlemi yapmazsanız kullanıcıyla giriş yapamazsınız.

Daha sonra /etc/passwd dosyasından kabuğun konumunu değiştirmemiz gerekir.

Not: Kabuk konumu parametre alamaz ve tam konum olmak zorundardır.

Kabuk değiştirildikten sonra tekrar giriş yapmanız gerekebilir.

Eğer kabuk konumu olarak /sbin/nologin kullanırsanız kullanıcının giriş yapmasını engellemiş olursunuz. Bu genellikle servislerin oluşturduğu kullanıcılar için kullanılır.

Unix Kabuğu

/bin/sh sistem tarafından kullanılan genel kabuktur. Bu kabuk debian tabanlılar için /bin/dash, alpine linux ve türkmen linux için /bin/busybox, diğerleri için /bin/bash konumuna sembolik bağlıdır.

Bu kabuk sistem açılırken kullanılır. Aşağıdaki gibi bir C kodu ile durumu örnekleyebiliriz.

#include <stdio.h>
int main(){
    system("echo $0");
    return 0;
}

Bu kod çalıştırıldığında ekrana sh yazacakdır. Çünkü system komutu şununla eşdeğer şekilde çalışır.

execl("/bin/sh", "sh", "-c", command, (char *) NULL);

Bu yüzden /bin/sh kabuğunu iyi seçmek sistem tasarımı açısından önemli olabilir. Farklı unix kabukları ve avantaj/dezavantajları aşağıdaki gibi özetlenebilir.

  • /bin/dash : Debian tarafandan geliştirilir. Sadece kullanıcılar tarafından fakat yazılımlar tarafından ihtiyaç duyulmayan ek özellikler bulunmaz. (Tab tuşu ile tamamlama gibi). Bu sayede küçük boyutludur ve hızlı çalışır. Bash uyumlu değildir.

  • /bin/ash : Busybox tarafından sağlanır. Ek pakete gereksinim duymaz. Basit seviyede özelliklere sahiptir. Kısmen bash uyumludur.

  • /bin/bash : Bash GNU/Linux dağıtımlarının genelinde varsayılandır ve Çok az sorun çıkarır.

Unix kabuğunu değiştirmek için ayağıdaki gibi bir yol izleyebilirsiniz.

$ rm -f /bin/sh
$ ln -s bash /bin/sh