01 Eylül 2016

Kali Linux - Bölüm-5: Shell History

Shell Tarihçesi (History)

“bash” diğer shell’lerde de olduğu gibi, kullanıcıyı daha önce girilmiş olan komutları tekrar tekrar yazmaktan kurtarmak için bir history imkanı sunar. Kullanıcı daha önce yazdığı komutları tekrar yazmadan kullanabilmek için ok tuşları ile önceki komutlar arasında gezinebilir (ok tuşuna bastıkça komut satırında daha önce yazılmış olan komutlar görüntülenir).

Bu imkan kullanışlılığı artırmasının yanı sıra eğer sistem ele geçirilmişse hassas olabilecek bilgilerin sızdırılması amacıyla da kullanılabilir. Örneğin komut satırında çalıştırılan bir komut kullanıcı adı ve parola gibi bilgiler içeriyor olabilir. Peki daha önce yazılmış olan komutları sistem nasıl hatırlar?


Çevresel değişkenlere bir göz attığımızda HISTFILE adlı bir değişkenin değerinin “/root” dizini altında (bu dizin “root” kullanıcısı için “home” dizinidir) “.bash_history” dosyası olduğunu görürüz. Bildiğiniz gibi “.” ile başlayan dosyaların adları ancak “ls” komutuna “-a” switch’ini verdiğimizde görülebiliyor. Eğer sistemimizde başka kullanıcılar da olsaydı ve bu kullanıcılar interaktif olarak shell ortamını kullansalardı muhtemelen onların “home” dizinlerinde de history dosyalarını görecektik.
Peki içinde “HIST” geçen diğer çevresel değişkenler ne anlama geliyor. Öncelikle bu değişkenler “.bashrc” scriptinin içinde geçiyor.


Bu script’te belirlenen değerleri açıklarsak:
  • HISTFILESIZE değeri “.bash_history” dosyasının taşıyabileceği maksimum satır sayısını belirtiyor.
  • HISTSIZE ise aktif oturum için hafızada tutulan (ve shell’den çıkış yapmadan diske yazılmayacak olan) maksimum komut satır sayısını belirtiyor.
  • HISTCONTROL değişkeni ise şu değerleri alabilir: “ignorespace” – boşluk karakteri ile başlayan komutların hatırlanmasını engelliyor, “ignoredup” – bir önce kullanılan komutla aynı olan komutların hatırlanmasını engelliyor. Eğer bu değer yukarıda da görüldüğü gibi “ignoreboth” ise hem boşluk karakterleri ile başlayan satırların hem de bir önceki satırla aynı olan satırların hatırlanmasını engelliyor. Eğer “erasedup” değeri kullanılırsa bu kaydedilecek olan komut kaydının aynısından dosyanın önceki bölümlerinde bulunanların tamamının silinmesi gerektiği anlamına geliyor.
Yukarıdaki HISTFILESIZE ve HISTSIZE parametreleri biraz kafa karıştırıcı. Bunu netleştirmek için aşağıdaki örneğe göz atın:


Yukarıda gördüğünüz durum şu şekilde gelişmiştir; “wc .bash_history” komutu ile bu dosya içindeki satır sayısının 999 olduğunu görüyoruz. Daha sonra bu dosyanın son 3 satırını görüntülediğimizde ise “wc .bash_history” komutunu göremiyoruz. Tekrar “wc” komutu ile satır sayısını görüntülediğimizde bu dosyanın içeriğinin değişmediğini görüyoruz (kaldı ki maksimum satır sayısı 2000 idi). Ancak yukarı ok tuşuna bastığımızda bir önceki komut tekrar görüntüleniyor. Çünkü işletim sistemi açık olan oturumda daha önce kullanılmış olan komutları shell “exit” komutuyla veya çarpı işaretinden kapatılmadan son kullanılan komutları dosyaya yazmıyor. İşte HISTSIZE hafızada saklanan ancak henüz diske yazılmamış olan bu kayıtların sayısını sınırlandırıyor.

<<Önceki Bölüm                                                                                               Sonraki Bölüm>>