3. Komutlar

_images/117.png

Bu bölümde terminal üzerinden işlemlerimizi kolaylaştıracak komutlara değineceğiz. Bu komutlar sadece Kali Linux ile sınırlı kalmayıp tüm debian tabanlı işletim sistemlerinde kullanılabilir. Şüphesiz ki terminal çoğu Linux kullanıcılarının gözünü korkutmaktadır. Aslında öyle olmayıp terminal üzerinden hız kazanma ve pratik yapmamızı sağlar. Bazı durumlarda sadece terminal üzerinden işlem yapmak zorunda kalabiliriz. Bunu bir örnekle açıklayacak olursak serverlar uzaktan kontrol için terminal üzerinden veya masaüstü ortamlarında gui sistemi çöktüğünde bunu düzeltmek tamamen terminale bağlıdır. Biz de bu bölüm altında sık kullanılan komutlara değineceğiz

Gui:

Grafiksel Kullanıcı Arayüzü (Graphical User Interface), bilgisayarlarda işletilen komutlar
ve bunların çıktıları yerine simgeler, pencereler, butonlar ve panellerin tümünü ifade
etmek için kullanılan genel addır

Linux’ta komutlar Uçbirim, Console veya Bash denilen komut girilebilen siyah ekranda yazılır. Bu ekran açıldığında aşağıdaki yazı gibi terminalde gösterilir.

Bash:

root@r00t:~#

Kullanıcı, komut istemini hangi kullanıcı olarak başlattığınızı belirtir. Bilgisayar, hangi kullanıcıda olduğunuzu belirtir. ~, hangi klasörde olduğunuzu belirtir.

Not:

~, home dizininizi belirtir.

3.1. Bilgi Edinme Komutları

Bu kısımda kullanılan sistem, komutlar hakkında genel olarak bilgi veren ve bu komutların detaylı olarak parametreleri gösteren komutlara değinilecektir.

3.1.1. man

Man komutu sistemde tanımlı olan komutlar hakkında ingilizce olarak komutun kullanımı ve parametreleri hakkında detaylı bilgi verir. man [komut_adı] şeklinde kullanılır.

Komut:

man ls
_images/94.png

Burada örnek olarak ls komutu hakkında bilgi ve kullanabilecek parametreleri listeledi. Buradan da görüldüğü gibi İngilizce olmazsa olmazlarımızın arasındadır.

3.1.2. pwd

Bu komutumuz anlık olarak sistemde bulunduğunuz dizini gösterir.

Komut:

root@r00t:~# pwd

Çıktı:

/root -->> Bulunduğunuz dizin kök dizin

3.1.3. hostname

Hostname, bilgisayarın adını görüntüleyen ve değiştiren komuttur. Ayar dosyası /etc/hostname ‘dir.

_images/104.png

Terminal kapatılıp yeniden açıldığında sağ taraftaki gibi bilgisayarın adı değişmektedir.

3.1.4. id

Kullanıcının; kullanıcı kimliği, birincil grup kimliği ve üye olduğu gruplar gösterilir. id [user] şeklinde kullanılır.

Komut:

root@Kali-LinuxTr:~# id root

Çıktı:

uid=0(root)
gid=0(root) gruplar=0(root)

Burada root kullanıcısına ait bilgiler gösteril

3.1.5. time

Time, herhangi bir komutun çalışma esnasında geçirdiği zamanı göstermektedir. time [komut_adı] şeklinde kullanılır.

Komut:

root@Kali-LinuxTr:~# time ls

Çıktı:

Belgeler Downloads Genel Masaüstü Müzik Resimler Şablonlar Videolar
real  0m0.002s
user  0m0.000s
sys   0m0.000s

Örneğin, ls komutunun ne kadar sürede işlem yaptığını görmekteyiz.

3.1.6. who

Who, anlık sistemde bulunan kullanıcıların kullanıcı isimleri, hangi terminalde çalıştıkları ve sisteme giriş tarih ve saatleri gösterir.

Komut:

root@Kali-LinuxTr:~# who

Çıktı:

root tty2 2016-06-17 00:34 (:0)

Eğer kullanıcı hakkında daha fazla bilgi edinmek istenilirse finger komutu kullanılabilir. finger [user] şeklinde kullanılır.

Komut:

finger root
_images/313.png

Burada root kullanıcısına ait klasörün hangi terminalde çalıştığı, en son açılışında ne kadarlık bir süre kaldığını ve zamanı göstermektedir.

3.1.7. ps

Ps, kullanıcının kullandığı terminalde çalışmakta olan komutların ve süreçlerin listesini verir. Eğer sistemin açılışından itibaren çalışmakta olan tüm süreçlerin listesini almak isterseniz ps -ax komutunu kullanabilirsiniz.

_images/413.png

Açılıştan bu yana sistemde çalışan süreçler görselde görüldüğü gibidir. Her sürecin bir PID değeri vardır. Eğer bir süreci sonlandırmak istersek kill komutu ile sonlandırabiliriz. Kill [PID] şeklinde kullanılır.

3.1.8. uname

Uname, sistem hakkında çekirdek sürümü, işlemci türü gibi bilgileri verir. Tüm bilgileri görüntülemek için -a parametresi kullanılır.

Komut:

root@r00t:~/Masaüstü# uname -a

Çıktı:

Linux r00t 4.3.0-kali1-amd64 #1 SMP Debian 4.3.3-5kali4 (2016-01-13) x86_64
GNU/Linux

3.1.9. top

Top; temel sistem durumunu, çalışmakta olan süreçlerin ne kadar bellek/işlemci kullanıldığını gösterir. Görsel bakımdan zengin, benzer bir uygulamada ntop uygulamasıdır. Sistem içerisinde kurulu olarak gelmez. Kendiniz github üzerinden sisteme dâhil edip kullanabilirsiniz.

Komut:

top
_images/513.png

3.1.10. screenfetch

Screenfetch, sistem hakkında genel bilgi verir. Sisteme küçük bir yazılım ile entegre edilebilir. Kullanıcı adı, kernel, shell, tema gibi bilgileri verir. Sisteme aşağıdaki kod ile kurulumunu sağlabilirsiniz.

Komut:

apt-get install screenfetch
_images/64.png

3.2. Dosya ve Klasör İşlemleri

_images/dir.gif

Dosya ve klasör ile ilgili komutlara başlamadan önce genel hatlarıyla Linux dosya yapısını inceliyelim.

Dosya sistemi işletim sisteminin bir disk veya bölüm üzerindeki dosyaları takip edilebilmesi için oluşturulmuş veri bütünüdür. Linux’ta dosya yapısı veri yapılarındaki tree(ağaç) yapısına benzemektedir. Başlangıç kısmı tree yapılarındaki gibi root (kök) dizindir.

Dosya sistem hiyerarşisi FSSTDN denilen bir standart ile belirlenmiş klasörlerdir. FSSTDN geçmişten gelen bir dosya düzenidir. Nadirende olsa bazı dağıtımlar bu hiyerarşi dışına çıkmıştır. Windows işletim sisteminin dosya yapısı ile kısaca karşılaştıracak olursak Windows’ta dosya adresleri “” iken linux’ta ise “/” dır. Dosya yolları /root/kalitr şeklinde olur. Windows bir program kurulumu gerçekleştirildiğinde ek bir yol belirtilmediği sürece Program Files klasörü altında kurulmaktadır. Linux’ta ise böyle bir durum söz konusu değildir. Linux’ta bir dosya kurduğumuzda ise örneğin belgelendirmeler /usr/share/doc/program/ ,info dosyarı / usr/share/info klasörü altında olmaktadır. Linux’ta her şey birer dosyadır. Sistemdeki aygıtlar, donanım kaynakları da buna dahildir. Bu yüzden sadece kali Linux ile yetinmeyip linux’ta genel dosya yapısını iyice kavramak gerekir.

_images/74.png

root dizininin yapısı genel olarak yukarıdaki gibidir. Dosya içerikleri kısaca aşağıdaki gibidir.

bin: Sistemin açılışı ve kontrolü için gerekli komutlardır. Hem kullanıcıların, hem de sistem görevlisinin kullanabileceği dosyalar (kök dizinde ise fazla şişmemesi koşuluyla) buraya atılabilir.

boot: Linux kernel’i barındırır. İşletim sisteminin yüklenme evresidir.

dev: G/Ç birimlerini yani donanım dosyalarını bu bölümde barındırır. Linux çekirdeğinde desteklenen her aygıta ait dosya /dev dizini altında bulunur./etc: Sistem yapılandırma dosyaları mevcuttur. Bu dizinde çalıştırılabilir dosyalar bulunmamalıdır.

/home: Kullanıcılara ayrılmış dizindir. Başka şekilde ayarlanmamış ise, açılan her hesaba ait kullanıcı, burayı kullanır. Büyük sistemlerde, bu kısım alt parçalara ayrılabilir. (/home/kali-linuxtr.net) gibi.

lib: Kütüphane dosyalarını barındırır. Ayrıca bazı kernel modulleri de bulunur.

media: Disklerin bağlanma noktasıdır.

opt: Yazılımların kaynak kütüphanesi bu kısımdadır.

proc: Süreç kontrollerini ve diğer sistem bilgilerini tutan dosya sistemidir. Kısaca kernel (çekirdek) dosyalarını barındırır.

root: Kök hücredir. Sistem yöneticisi için ayrılan dizindir.

sbin: Hayati sistem komutları bu kısımda barınır.

tmp: Geçici dosyalarının tümü burada yer alır. Belirli aralıklarda temizlenmesi iyi olur.

usr: Diğer kaynak dosyalar burada yer alır ve daha sonra yüklenen uygulamalar buraya yüklenir.

var: Web servislerinin çalıştığı kısımdır. Burada /var/www dizini altında web uygulamalarınızı çalıştırılmaktadır ve log dosyaları bu kısımda bulunur. İstenildiği zaman dışarıya bağlantı şeklinde verilir.

Aşağıda dosya ve klasörlerde genel itibariyle kullanılabilecek komutlar yer almaktadır. Komutlar, dosya ve dizinler üzerinde çeşitli işlemleri yapabilir. Bunlar; oluşturmak, silmek, listelemek, taşımak, kopyalamak ve sıkıştırmak gibi sıralanabilir. Her bir dosyanın kendisine has, belirli kullanıcılara tanımlanmış izinleri vardır. Bu izinler; okuma, yazma ve çalıştırmadır. Linux’ta bunların karşılığı aşağıdaki gibidir.

  • Read(r) : Dosya veya dizinlerin okunabilmesi için gerekli olan izindir.

  • Write(w) : Yeni bir dosya veya dizin oluşturmak ve değiştirmek için gerekli olan izindir.

  • Execute(x) : Dosya çalıştırılması ya da dizine giriş hakkı için kullanılan izindir.

Linux’ta her bir kullanıcının belirli UID (kullanıcı kimliği) ve GID (grup kimliği) vardır. Dosya izinlerinde belirli bir yapı vardır. Bunlar aşağıdaki gibidir:

_images/84.png

d: Direktory flag

1.rwx: Dosya sahibinin izinleri (UID)

2.rwx: Grubun izinleri (GID)

3.rwx: Normal kullanıcı yani herkes için olan izindir.

3.2.1. ls

ls; dosya veya dizinin özelliklerini listelemek için kullanılır. Sık kullanılan komutlardan biridir. Çeşitli parametreleri mevcuttur:

_images/119.png

-l: Dosya ve dizinleri tüm özellikleriyle beraber listeler.

-a: Gizli dosyaları gösterir.

-h: Tek başına pek bir anlam ifade etmez. -l parametresi ile kullanıldığında dosya boyutlarını detaylı bir şekilde gösterir.

Not:

Eğer birden fazla özelliği listelemek isterseniz, parametreler birleştirilir.
Yukarıdaki örnekte olduğu gibi hem –l hem de –h parametreleri bir arada kullanıldı.

3.2.2. cd

cd komutu dizinler arası geçişi sağlar. Kullanımı cd [dizin_adi] şeklindedir. Bir üst dizine geçmek için cd .. komutu kullanılır. Üst üste dizin değiştirmek için cd /dizin1/dizin2 şeklinde kullanılmaktadır.

Komut:

root@Kali-LinuxTr:~# cd /var/log
root@Kali-LinuxTr:/var/log# cd ..
root@Kali-LinuxTr:/var#

3.2.3. mkdir/rmdir

mkdir: Dizin oluşturmak için kullanılan komuttur.

Komut:

root@Kali-LinuxTr:~/Masaüstü# mkdir kali_linux
root@Kali-LinuxTr:~/Masaüstü# ls
kali_linux

Burada kali_linux adında bir dosya oluşturduk. İstenilirse hedef dizinin altında yeni bir dizin de oluşturulabilir.

Not:

-p sunucu taraflı çalışırken uzaktan dizin oluştururken oluşturulacak dizin
zaten mevcut ise es geçmek için kullanılır.

rmdir: Dizin silme işlemini gerçekleştirir. Aşağıdaki görüntüde örnek olarak silme işlemi gerçekleştirildi.

_images/124.png

3.2.4. cp/mv/rm

cp: Dosya ve dizin, kopyalamayı sağlayan komuttur.

Komut:

root@Kali-LinuxTr:~/Belgeler/kali# ls
kali.txt
root@Kali-LinuxTr:~/Belgeler/kali# cp kali.txt /root/Masaüstü/kalitr.txt

Son komutta kali.txt dosyasını masaüstüne kopyalama işlemini gerçekleştirdik.

mv: Dosya taşıma işlemini gerçekleştirir.

_images/134.png

Var olan aaaa.txt dosyasını root dizini altındaki belgelere taşıdık. Aynı zamanda -f parametresi ile dosya ismi değiştirilir.

rm: Dosya ve klasör silmeye yarar.

_images/144.png

Yukarıdaki komut ile aaaa.txt adlı dosyayı sildik.

Not:

-rf parametresi ile klasör silme işlemi gerçekleştirilir.

3.2.5. chmod

Dosya ve klasör izinleri chmod komutu ile verilmektedir. Dosya izinleri hakkında yukarıda detaylıca bilgi verildi. Daha fazla bilgi için help[-h] parametresini kullanabilirsiniz.

Komut:

root@Kali-LinuxTr:~/Masaüstü# ls -l
toplam 4
-rw-r--r-- 1 root root 16 Şub 25 12:52 kalitr.txt
root@Kali-LinuxTr:~/Masaüstü# chmod +x kalitr.txt
root@Kali-LinuxTr:~/Masaüstü# ls -l
toplam 4
-rwxr-xr-x 1 root root 16 Şub 25 12:52 kalitr.txt

İlk önce dosyamızın yetkilerini -l ile kontrol edip chmod ile yeni yetki ataması gereçekleştirdik.

3.2.6. Arşivleme

Bildiğiniz gibi dosya arşivleme günlük hayatta sıkça kullanmaktayız. Aşağıdaki komutları bilip uygulamak hız açısından çok önemlidir.

3.2.6.1 zip/unzip

Dosyaları hızlı bir şekilde .zip şeklinde arşivlemek ve arşivi açmak için zip ve unzip komutları kullanılmaktadır. Zip işlemi için aşağıdaki komut uygulanır.

Komut:

zip -r zipadi.zip dosyalar

şeklinde belirtilen dosya ve klasörler zipadi.zip şeklinde sıkıştırma işlemini gerçekleştirir. Sıkıştırılan dosyayı açmak için ise unzip komutu kullanılır.

Komut:

unzip zipadi.zip

şeklinde çalıştırıldığında bulunduğu dizine tüm dosyaları çıkartmaktadır. Eğer belirli bir dizin içerisine dosya veya klasör çıkarılması istenilirse “-d” paramateresi kullanılır.

Komut:

unzip zipadi.zip -d dizinadi

şeklinde kullanılır.

3.2.6.2 tar

tar arşivleme yapısı güçlü bir yapıya sahiptir. tar yapısı kullanılırken genellikle bir çok parametre ile beraber kullanmaktayız. Genel olarak sık kullanılan parametreler aşağıdaki gibidir.

-c : yeni arşiv dosyası oluşturmak

-x : dosyarı dışarıya aktarmak

-t : arşiv dosyasının içeriğini görüntülemek.

-v : arşiv dosyası açılırken ilerleme durumunu görüntüler.

-f : arşivde bulunan dosya isimlerini listelemek için kullanılır.

-W : arşiv dosyasının içeriğini doğrulamak için kullanılır.

3.3. Disk Yönetimi

Disklerin yönetimi için ihtiyaç duyulan komutları bu başlık altında değineceğiz.

3.3.1. df/du

df: Salt olarak kullanıldığında sabit diskin ve bölümün toplam boyutların kullanılmış alanları, boş alanları, yüzde kaçının dolu olduğunu ve nereye bağlı olduğunu verir.

_images/154.png

du: Salt olarak kullanıldığında aktif klasörün ve aktif klasörün altındaki tüm klasörlerin (alt klasörler de dâhil) isimlerini ve toplam boyutlarını verir. Burada boyuttan kast ilgili klasörün içindeki her şeyin boyutudur.

_images/164.png

3.3.2. mount/umount

mount komutu ile herhangi bir aygıtı herhangi bir klasöre bağlanılabilir. Bu sayede o klasör açtığında o aygıtın içindekilerine erişilir. Aslında Ubuntu ve Pardus gibi modern dağıtımlarda bu işlem otomatik olarak gerçekleşir. Örneğin CD-ROM sürücüsüne bir CD taktığınızda CD ile ne yapmak istediğinizi belirten bir ileti kutusu görüntülenir. Ancak modern dağıtımlarda mount komutunun kullanılması kısıtlanmamıştır. Şimdi CD-ROM sürücünüze bir CD yerleştirin ve şu komutu verin;

Komut:

mount /dev/cdrom "Yeni Klasör"

Bu komutu verdikten sonra aktif dizindeki Yeni Klasör adlı klasörünü açıldığında takılan CD’deki dosya ve klasörler görüntülenir.

umount komutu mount komutunun yaptığı işin tersini yani “bağlantıyı kesme” işlemini yapar. Bu sayede CD-ROM’a bağlı klasörün gerçek içeriğini tekrar görüntülenebilir. Az önceki bağlantıyı kesmek için şu komutu verin;

Komut:

umount /dev/cdrom

Not:

mount ve umount komutlarını kullanabilmeniz için root modunda olmanız gerekir.

3.3.3. fdisk

fdisk komutu ile disk bölme, disk türünü değiştirme, disk bölümlerini yönetme, disk yapısını değiştirme gibi işlemleri gereçekleştirmektedir. Sisteme bağlı olan diskleri görüntülenmek ve diskin harfini öğrenmek için aşağıdaki komut kullanılmaktadır.

Komut:

fdisk -l

//Eksik Alan

3.4. Metin Dosyaları ile İşlemler

Bu kısımda metin dosyaları için işlemleri kolaylaştıracak komutlara değinilecektir.

3.4.1. cat

Herhangi bir dosyanın içeriğini terminal üzerinden görüntülemek için kullanılır.

Komut:

cat airmon
_images/174.png

3.4.2. echo

echo kendisinden sonra gelen ifadeyi ekrana yazdırır. Metin dosyalarına içerik eklenilebilir ve var olan içerikleri silip sadece yeni eklenen içeriklere de bırakabilir. Bu işlemi ise > veya >> ile yapabiliriz. Eğer > parametresini kullanılırsa metin dosyasının içeriği silip yeni bir içerik ekler. Eğer >> parametresi kullanılıyorsa metin dosyasının son satırına veri girişi yapar. Bir örnek üzerinden gösterecek olursak;

Komut:

root@Kali-LinuxTr:~/Masaüstü# cat kali.txt
Kali Linux
root@Kali-LinuxTr:~/Masaüstü# echo >> kali.txt Kali
root@Kali-LinuxTr:~/Masaüstü# cat kali.txt
Kali LinuxKali
root@Kali-LinuxTr:~/Masaüstü# echo > kali.txt Kalitr
root@Kali-LinuxTr:~/Masaüstü# cat kali.txt
Kalitr

3.4.3. more

Metin dosyaları içeriği fazla büyük olan dosyaların yüzde olacak şeklinde terminalde gösterir. Satır satır ilerlemek için enter tuşu kullanılır veya bütün şeklinde ilerlemek için space tuşu kullanılabilir. more komutunu diğer komutlar ile de kullanılabilir.

_images/183.png

İşlemi sona erdirmek için q tuşuna basmanız yeterlidir.

3.4.5. tail

head ile kullanımı aynıdır tek farkı head ilk satırları gösterirken tail ise -n parametresi ile belirlenen satır sayısı kadar son satırları gösterir. Varsayılan değeri 10 olup -n parametresi ile satır sayısı belirlenir.

_images/204.png

3.4.6. grep

Metin dosyalarında arama işlevi gerçekleştirmek için kullanılır. Aranılan kelimedeki bulunan satırı listeler.

Komut:

root@Kali-LinuxTr:~/Masaüstü# grep kali host.txt
kali-linuxtr.net

Burada host.txt dosyamızın içerisinde kali geçen satırı listelediğimizde kali-linuxtr.net’ satırını görmekteyiz.Burada çok basit bir şekilde dosya içerisinde arama gerçekleştirdik. Grep komutu özellikle çok büyük ve karmaşık dosyalarda çok işe yaramaktadır. Ne aradığınızı eğer biliyorsanız grep kendinize göre aramayı özelleştirebilir ve çok daha hızlı arama gerçekleştirebilirsiniz.

3.4.7. awk

Eklenilecektir.

3.4.8. strings

//Eklenilecektir.

3.5. Neler Öğrendik?

Günlük hayatta işlemlerimizi kolaylaştıracak komut setlerini bu başlık ile beraber öğrenmiş olduk. Bu komutların en büyük avantajı GUI kurulmayan sistemlerde hız ve basit bir şekilde server yönetmeyi öğrenmiş olduk.