Herkese merhaba, Bu yazımda Linux temellerine giriş yaparak, orta seviyeye yakın bir anlatım sunacağım. Hangi kaynaklardan yararlanabileceğiniz, dosya sistemi, temel ağ komutları, kullanıcı yönetimi, dosya ve dizin yönetimi gibi konulara değineceğim. Ayrıca Linux'un kısa geçmişinden de bahsedeceğim. Okumaya başlamadan önce çayınızı veya kahvenizi alın, çünkü bu uzun bir yazı olacak.

Linux Nedir?
Linux, bir işletim sisteminden ziyade bir çekirdektir. Bilgisayar donanımlarıyla etkileşim kurmamızı sağlayan temel yapı yani kernel görevi görür. Başlangıçta Bell Laboratuvarları'nda geliştirilen UNIX işletim sistemi ücretliydi. Bunun üzerine Linus Torvalds, Helsinki Üniversitesi'nde öğrenciyken açık kaynaklı ve ücretsiz bir proje olarak Linux'u başlattı. Ancak zamanla donanımsal uyumsuzluklar nedeniyle Linux'un stabil çalışmasında sorunlar yaşandı. Bu noktada GNU ile iş birliği yapılmaya başlandı ve toplulukların katkısıyla günümüzde kullanılan GNU/Linux kavramı ortaya çıktı.
Kendim çizdiğim bir diyagram.
Kernel (Çekirdek) Nedir? İşletim sistemlerinin temel yapısını oluşturur. Donanım ile yazılım arasındaki iletişimi sağlar, sistem kütüphanelerini yönetir ve uygulamaların çekirdeğe erişebilmesi için bu kütüphanelerin kullanılmasını gerektirir. Ayrıca bazı kütüphaneler, sistem araçlarını veya geliştirici araçlarını da içerebilmektedir. Shell (Kabuk) Nedir? Shell, bir işletim sistemi ile kullanıcı arasında köprü görevi gören bir komut yorumlayıcıdır. Windows tarafında CMD ve PowerShell, Linux ve macOS tarafında ise Bash ve Zsh kullanılmaktadır. Applications (Uygulamalar) Nedir? Kullanıcının sıkça kullandığı ve yazılım geliştiriciler tarafından sunulmuş uygulamalardır. Bazı uygulamalar ise işletim sistemi geliştiricileri tarafından gömülü olarak gelebilir. Örneğin Windows tarafında Paint ve Internet Explorer (günümüzde varsayılan tarayıcı Chromium tabanlı Microsoft Edge olmuştur), Linux tarafında ise LibreOffice, Thunderbird e-posta istemcisi ve Mozilla Firefox tarayıcı örnek verilebilir. Distro (Distribution / Dağıtım) Kavramı Nedir? Linux'un açık kaynaklı olduğundan bahsetmiştik. Bazı sürümleri kurumsal firmalar tarafından ücretli olarak sunulsa da genel anlamda Linux ekosisteminin büyük çoğunluğu, yani yaklaşık %90'ından fazlası ücretsiz ve açık kaynaklıdır. Buradaki temel amaç, yazılım ve sistem geliştiricilerine özgürlük sağlamaktır. Bir sistem geliştiricisi, eski bilgisayarlarda çalışacak bir işletim sistemi geliştirmek istiyorsa, lightweight tabanlı, optimize edilmiş ve fazla paket barındırmayan dağıtımlar yayınlayabilir. Pentest süreçleri veya özellikle siber güvenlik çalışmaları için ise Kali Linux ya da ParrotOS gibi dağıtımlar kullanılabilmektedir. Ben de ihtiyacıma göre genellikle ParrotOS, AntiX, bazen Ubuntu veya Kali tercih ediyorum. Dağıtımları inceleyebileceğiniz bir web sayfası: https://distrowatch.com/ İstenen masaüstü ortamlarını veya paketleri barındıran farklı dağıtımlar bulunmaktadır. Hafif Linux dağıtımlarına örnek olarak ZorinOS, Puppy Linux, AntiX Linux ve Linux Lite gösterilebilir. Ücretli olanlara örnek vermem gerekirse: Red Hat Enterprise Linux (RHEL) → Red Hat tarafından sunulur; destek ve güvenlik hizmetleri için lisans ücreti gereklidir. SUSE Linux Enterprise Server (SLES) → SUSE tarafından sunulur; özellikle kurumsal sunucu ve SAP ortamlarında popülerdir. Oracle Linux (Enterprise sürümü) → Oracle tarafından RHEL tabanlı olarak geliştirilir; kurumsal destek hizmeti ile ücretlidir. Ek bir yol haritası Eğer Linux konusunda yeniyseniz ve işletim sistemini kurmakta sorun yaşıyorsanız endişelenmeyin; internet üzerinde çeşitli terminal uygulamaları mevcuttur. Hatta Cisco'nun NDG Linux Unhatched eğitimi üzerinden terminal ve temel Linux pratiği yapabilirsiniz. NetAcad platformuna kayıt olarak eğitimi tamamlayabilir ve ücretsiz sertifika alabilirsiniz.
İlgili bağlantı: https://www.netacad.com/courses/linux-unhatched?courseLang=en-US https://tryhackme.com/module/linux-fundamentals
Bu web siteleri hem ücretli hem ücretsiz eğitimler sunmaktadır ve güzel yol haritaları sağlamaktadır. Linux Dosya Sistemi Hiyerarşisi: Swap: RAM yetersiz kaldığında, diskin ayrılmış bölümünü geçici bellek olarak kullanan alan. EXT: Linux için geliştirilmiş ilk yerel dosya sistemi ailesi (ext2, ext3 ve ext4 sürümleri vardır). EXT4: Günümüzde en çok kullanılan Linux dosya sistemi; büyük dosya desteği, hız ve journaling (günlükleme) özelliği sunar. JFS (Journaled File System): IBM tarafından geliştirilen, yüksek performans ve düşük CPU kullanımı sunan Linux dosya sistemi; journaling sayesinde veri güvenliğini artırır. XFS: SGI tarafından geliştirilmiş, büyük dosya ve dosya sistemi desteği olan yüksek performanslı Linux dosya sistemi; özellikle sunucular ve yüksek veri hacimli sistemler için uygundur.
Kendim çizdiğim bir başka diyagram.
Temel komutlara giriş:
pwd (Print Working Directory) Çalışılan dizinin yolunu ekrana yazdırır.

Kullanımı: pwd şeklindedir. Bulunduğumuz dizin tam yolunu bize gösterir. Bazı Linux dağıtımlarında bu durum farklı olabilir özelleştirmeye bağlı olarak ancak çoğunluğu /home/user şeklindedir.
Ls komutu:
Ls bize bulunduğumuz dizinin altında ki tüm klasör ve dosyaları gösterir.
Yardım çağrıları: Sistem üzerinde bazı komutların hangi argüman ve parametreleri alabileceğini sorgulayabiliriz. Bunun için --help seçeneğinden destek alabiliriz. Örneğin, ls komutu ile yardım çağrısı alabiliriz.

. ile başlayan dosya ve dizinler Bunlar genellikle sistem üzerindeki gizli dosya ve dizinlerdir. ls -l parametresi kullanımı Az önce ls komutu ile sorguladığımız dosya ve dizinleri -l parametresi ile incelediğimizde, okuma veya yazma izinleri, kullanıcı bilgisi, boyut ve oluşturulma tarihi gibi bilgilere erişebiliriz. Aşağıda görünen dosyalar, genellikle normal Linux dağıtımlarında bulunmaz; Kali Linux kullandığım ve daha önce bazı çalışmalar yaptığım için burada daha kalabalık dosya ve dizinler görebilirsiniz.

ls -a ile gizli dosyaları görmek Başında . ile başlayan dosya ve dizinler artık göz ardı edilmez ve tümü görünür hale gelir.

İkisini birden kullanmayı deneyelim:

Manual (Kullanım Kılavuzları) kullanımı
Sistem üzerinde kullandığımız komutların daha detaylı bilgisine erişmek istersek, internet üzerinde de kaynaklar mevcuttur. Resmi bir kaynak olarak şu bağlantıyı paylaşabilirim: https://www.man7.org/linux/man-pages/man1/man.1.html Linux üzerinde bir komut için kullanım kılavuzunu görmek istiyorsak man komutunu kullanabiliriz. Örnek olarak ls komutunu ele alalım. man ls yazıp enter tuşuna bastığımızda, komutla ilgili detaylı kılavuzlar ekrana gelir.

mkdir (Make Directory) Dizin oluşturmak için kullanılan bir komuttur. Örneğin, çalışmak için yeni bir dizine ihtiyacınız varsa, mkdir komutu ile bu dizini oluşturabilirsiniz.
Kullanımı: mkdir Dizinadı
cd (Change Directory) Dizinleri değiştirmek için kullanılır ve dizinler arasında gezinmemizi sağlar. Örneğin, oluşturduğunuz dizinden bir üst dizine veya farklı bir dizine geçmek için cd komutunu kullanabilirsiniz. Bir üst dizine çıkmak için cd .. yazmanız yeterlidir.
Kullanımı: cd Dizinadı
Eğer kök dizine geçmek istiyorsanız, cd ../.. yazmanız yeterli olacaktır. Bu, göreli yol (relative path) kullanımına örnektir.

Kök dizinden oluşturduğunuz dizine gitmek istiyorsanız, dizinin tam yolunu kullanarak cd /tam/yol/dizin_adı şeklinde komut yazabilirsiniz. Bu, mutlak yol (absolute path) kullanımına örnektir.

rmdir (Remove Directory) Bir dizini silmek için kullanılır. Öncelikle dizin içerisindeyseniz cd .. ile bir üst dizine çıkmanız ve ardından dizini silmeniz uygun olacaktır.
rmdir Dizinadi
Bir örnek yapalım:
Masaüstü kısmına giriş yaptık, ardından mkdir ile tekrar bir dizin oluşturduk sonrasında dizinleri listeledik ve en sonunda yolu gösterdik.
Dizin isimlendirme Windows üzerinde olduğu gibi, bazı Linux dağıtımlarında dizin ve klasörleri sağ tıklayarak yeniden isimlendirme özelliği bulunmayabilir. Bu durumda terminal üzerinden mv komutunu kullanabiliriz. mv (Move) komutu Genellikle dizinleri veya dosyaları taşımak için kullanılır, ancak yeniden isimlendirme amacıyla da kullanılabilir. Bu durumda aşağıdaki çıktıyı inceleyebiliriz.
Önce ilgili dizine geçtim sonrasında test adında bir dizin oluşturdum ardından mv komutu ile ben dizin ismini test halinden testhakan ismine dönüştürdüm ve ls ile kontrol ettim.
setxkbmap Bu komut, İngilizce klavye düzenini Türkçe veya başka bir dile çevirmek için kullanılır. Bazen güncellemeler sonrasında klavye dili değişebilmektedir; nadiren tekrar Türkçe dil seçeneğine geçmeniz gerekebilir.
Kullanımı: setxkbmap en veya tr gibi ülkelerin ilk iki harfini yazmanız yeterlidir.
file kullanımı file komutu, genellikle herhangi bir dosyanın uzantısını ve metadata bilgilerini kullanarak dosya hakkında bilgi verir. Ancak Linux ortamında dosya uzantıları, Windows ortamındaki kadar belirleyici değildir.
File komutuyla black-03.log.csv dosyasının ASCII text formatında olduğunu görüyorum.
touch komutu Dosya oluşturmak için kullanılan en temel komutlardan biridir.
Kullanımı: touch dosya adi dosyadi2 - İki tane art arda dosya oluşturdum.
rm Dosyaları silmek için kullanılır. Bu komutla ilgili internette dolaşan bir şaka da vardır: sudo rm -fr ./ * Komutu inceleyelim: sudo: Yetki yükseltmek için kullanılır; en yüksek seviye kullanıcı root'tur. rm: Dosya silmek için kullanılır. -f: Zorla anlamına gelir. Windows tarafında PowerShell'de /force ile benzer işlevi vardır. Genellikle açık bir proses varsa, işletim sistemi üzerinde zorla kapatmak için kullanılır. -r: Recursive yani özyinelemeli olarak çalıştır anlamına gelir. ./: Geçerli dizini belirtir.
sudo rm -fr ./ * komutu bir araya geldiğinde, tüm dizin ve dosyaları, gizli olanlar dahil, siler. Bu nedenle, birisi size sistemde yer açmak için Fransızca dil paketini silmenizi söylerse, bu komutu çalıştırmamalısınız; tüm sistem dosyaları ve dizinleri silinebilir. rm için basit bir örnekle devam edelim: oluşturduğum dosyalardan birini silmek istiyorum.
Daha önceden oluşturduğum touch dosyasını sildim tamamen.
rm --help komutu ile rm komutunun alabileceği argüman ve parametreleri görebilirsiniz. cat (concatenate) komutu Dosya içeriklerini ekrana yazdırmamızı sağlayan bir komuttur. Birden fazla dosyanın içeriğini birleştirerek ekrana yazdırabilir.
echo komutu
Dosyaların içine veri girişi yapmamızı sağlar. Ayrıca, ekranda herhangi bir mesajı yazdırmak için de kullanılabilir.


Deneme olan yazılar sadece test2 dosyasında var ben >> ifadesiyle eklediğimde yeni bir satır olarak ekledi.
Nano kullanımı: Nano Linux ortamında metin düzenleme için kullanılan bir editördür terminal üzerinde.


Dosya içeriğini düzenledikten sonra kayıt etmek için CTRL + O tuşlarına ve ardından enter'a basmamız gerekiyor. Eğer dosyayı okumak isterseniz CTRL + R veya dosya içinde bir metin bulmak isterseniz CTRL + F tuş kombinasyonunu kullanmanız yeterli olacaktır. Çıkmak için ise CTRL + X ile çıkmanız gerekiyor.

Vi/Vim Editörü: Vim veya vi editör olarak Linux ortamında kullandığımız bir başka yazılımdır. Nanoya kıyasla çok daha karmaşık ve yeteneklidir. Hatta başka bir şaka olarak "Vim'den çıkamıyorum nasıl kapatacağım?" diye bir soru döner internet üzerinde işte bu soruyu oluşturan yazılımdır kendisi. Aynı zamanda Windows ortamına da kurabiliyorsunuz.


Vi açıldığında dosyanız önizleme modunda açılır herhangi bir işlem yapamazsınız. İşlem yapmak için klavyenizde INSERT tuşuna basmanız gerekiyor ardından sol alt tarafta INSERT yazısı göründüğünde artık metinlerinizi yazabilirsiniz. Peki metinleri yazdık nasıl kayıt edeceğiz? Insert modundan çıkmak için ilk önce ESC tuşuna basmanız gerekiyor sonrasında :wq ile kayıt edip çıkış yapmanız gerekiyor. W ifadesi write. Q ifadesi ise quit anlamındadır. Ardından enter tuşuna basıp çıkabilirsiniz.

Head komutu: Head komutu genelde çok uzun bir log dosyası incelenecek ise belli bir aralık ile incelemek için bize olanak sağlar ilk satırdan aşağı doğru ilerler. Örnek kullanım cat ile karşılaştırması:

Cat komutu bütün her şeyi alır ve bizim istediğimiz miktarda ki veriyi incelememizi zorlaştırır. Head ise parametre belirterek istediğimiz ölçüde inceleme yapmamıza olanak sağlar. Sudo: Root için erişim yetkisi sizden oturum şifresi isteyecektir. Head: Komutumuz. -3: Bana sadece 3 satırı göster demek. Burada illa 3 olmak zorunda değil uzun bir dosyaya bakıyorsanız bu 10'da olabilir 100'de olabilir fark etmez. test2: Dosyamızın ismi. Tail kullanımı: Tail ise head ile benzer bir mantığa sahiptir ancak metinin sonundan başlar ve yukarı doğru çıkar. Örnek bir kullanım:

-3 ifadesinde neden 3 tane metin yazdırmadı onu da açıklayayım, metini yazarken ben 1 adet boş paragraf açmıştım enter tuşu ile ve bunu aslında bir satır olarak kabul ediyor ve onu da bastırıyor. More komutu: More komutu ise genelde uzun logları incelerken sanki bir kitap okuyucu izlenimi verdirmek için kullanılır. Bu aslında bize logu parça parça okumamıza olanak sağlar. Klavyede olan aşağı ve yukarı yön tuşları ile parça parça ilerleyebiliriz.


Aşağı veya yukarı indikçe sol altta olan % ifadesi artıp azalabilir en sona geldiğinizde komut sizi tekrar terminale atacaktır. Filtreleme İşlemleri: Grep komutu: Genelde belli desenler veya kelimelere göre filtreleme yapar. Örneğin bir dosya içerisinde büyük küçük harfle başlayan veya Regex formatında filtreleme ile aramalar yapmamıza olanak sağlar. Örnek kullanımı inceleyelim. İlgili dizin içerisinde bana "root" içeren bilgileri getir dedim.

Başka bir örnek:

Grep –i "bir" test2 ile aslında biz dosya içinde "bir" geçen satırları buldurduk ve –i parametresi ile büyük veya küçük fark etmeksizin getir dedik. Grep –i "bir" test2 test1 ile de aslında 2 dosya üzerinde de arama yapabiliriz ve bize çıktısı genelde ilk ve son belirtilen olacak şekilde dosya içerisinde ilgili bilgi varsa çıktıyı buna göre bastıracaktır. Grep –i "bir" test* şeklinde bir ifade kullanıyorsak bu durumda test1, test2, testhakan… gibi test ile başlayan herhangi bir dosya varsa hepsine sırayla bakıyor ve "bir" içeren bir ifade var mı arıyor. Daha fazla kullanım için grep - - help ile kontrol edebilirsiniz. Cut kullanımı: Cut genelde byte'lara yani karakterlere ayıran bir yapıyla ayırabiliyor ve daha detaylı inceleme yapabiliyoruz veya listeleyebiliyoruz.
Burada görüldüğü üzere ilk 3 karakteri aldırdım.
Burada ise her satır ve sütunun 1,3,5 ve 7. karakterini seçtirdim.
Bir tane dosya oluşturdum aynı dizin içerisine ve bu bilgiler var. Ben şimdi bu bilgilere nasıl erişeceğim?
Buraya çok dikkatli bakmanızı istiyorum yukarıda ki bilgilerin hepsi , ile ayrıldığından biz ayırma işlemini , üzerinden yaptık ve 2. Satır parolalara denk geldiği için biz tüm satır ve sütunların parolalarını aldık. cut → Satırları kesip istediğimiz kısmı almak için kullanılır. -d "," → Ayraç (delimiter) olarak virgül kullan. Yani satırları virgüllerden böler. -f 2 → Her satırın 2. alanını (field) al. parolalar → İşlem yapılacak dosya.
Bu sefer ise 1. ile 2. satır ve sütunları getirdik.

Bu örneği de inceleyelim grep ile birleştirdik. Ben burada sadece kendime ait şifreyi ve kendimi görmek istedim, | ifadesi pipe olarak geçer burada yönlendirme yapar. Ne demek istiyorum? cut -d "," -f 1–2 parolalar yazdığımız komutun ilk kısmının çıktısını al grep -i Hakan komutumuzun ikinci kısmıyla beraber kullan demektir. wc (word count): Dosya veya komut çıktısındaki satır, kelime ve karakter sayısını gösteren komut.

Test2 dosyamızda olan satır, kelime ve karakter sayısını görüyorsunuz sırasıyla. Sort Kullanımı: Sort genelde sıralama amaçlı kullanılır alfabetik veya numerik olarak sıralama yaptırabiliyorsunuz. Test2 dosyamızda nasıl çıktılar almışız kontrol edelim.
İlk komutumuz normal olarak sıraladı ancak 2. komutta dikkat ederseniz –r ifadesi var bu reverse yani tersten sırala anlamına gelir.
Uniq: Uniq genelde dosya içerisinde benzersiz olan yapıları bulmak için kullanılır. Örneğin test2 dosyamızda 3 tane deneme kelimesi var. Bunların içerisinde daha önce hiç tekrar etmemişleri bulmaya çalışır.
Peki burada neden böyle oldu? Satırların bazıları art arda olduğu için aslında.
Bu yöntemle istediğimiz çıktığı sağlamış olduk. Burada olan durum ise ilk önce sort komutuyla listeledik sonrasında liste üzerinden uniq ile benzersiz olanları buldurdum.
Sistem üzerinde olan kullanıcıları bulmak: Bunların en bilineni /etc/passwd klasörünü kontrol etmektir.

Bu ekranda gördüğümüz tüm bilgiler aslında sistem kullanıcılarına ait. Bunları ben tanımlamadım, işletim sistemi üzerinde kurulu olan servis ve istemcilerin kullandığı kullanıcılardır.

Genelde dışarıdan müdahileye açık olan kullanıcıların ID'leri Linux ortamında 1000, 1001 şeklinde devam edenlerdir. Ancak Windows tarafında ise 500 ile başlar bu kullanıcı ID'leri. Bir diğer yöntem ise /etc/shadow klasörünü incelemektir.

Burada dikkat edilmesi gereken bir durum var passwd klasöründe genelde kullanıcı adları barınırken shadow klasöründe ise kullanıcının tuzlanmış bir şifre hash değeri bulunur. Genelde birden fazla şifreleme algoritması ile orijinal şifrenin bulunması zorlaştırılır.

Genelde biz bir şifre ürettiğimizde bu zayıf bile olsa işletim sistemi genelde bunu daha güvenli yapabilmek için belli değerleri alıp matematiksel işlemlerle tuzlar. Tuzlama ve Parola Saklama Örnek parola "1235" girilir. (Ancak sistemlerinizde bu kadar basit parolalar kullanmayın lütfen) Sistem rastgele tuz üretir, örn: "3f2a9b". Tuz + parola birleştirilir ve hashlenir: hash = SHA256("1235"+"3f2a9b") Veri tabanında hash + tuz saklanır. Girişte aynı işlem yapılır ve hash karşılaştırılır. Amaç: Parolanın açık hâlinin bulunmasını zorlaştırmak. Kullanıcı ekleme: Sudo useradd Hakan dediğimizde bir kullanıcı eklemesi gerçekleştirebiliyoruz.

Tekrardan /etc/shadow klasörünün sonuna geldiğimde benim adımla bir kullanıcı eklenmiş halde.
/etc/passwd tarafında ise sonda 1001 ID'si ile eklendiğini görüyoruz.
Kullanıcıya Şifre Tanımlama:

Burada kullanıcıya bir şifre tanımlaması yaptık 12345 şeklinde bir şifre tanımladım. Kullanıcıyı ilk tanımladığımızda herhangi bir şifre tanımlaması yapılmadığından elle tanımlamak durumundayız.
Kullanıcı Silme: Kullanıcı silmek için userdel kullanıcıadı şeklinde bir tanımlama yapmamız gerekmektedir. Ancak başında sudo ile kullanılması gerekecektir admin yetkisiyle yapılabilecek bir işlem olduğundan.

Kullanıcı Grupları: /etc/group Dizini Linux üzerinde kullanıcıların gruplarını saklar. Burada kullanıcıların hangi grupta olduğunu görebiliyorsunuz. Gruplar ne işe yarar? Bir kullanıcı grubunun sistem üzerinde toplu olarak okuma, yazma veya hangi yetkilere sahip olabileceğinin kolay yoldan denetlenmesini sağlar.
Kullanıcı Grubu Ekleme:
Groupadd logreaders adında bir grup ekledim sadece log okunduğunu varsayalım.
Ardından tekrar /etc/group klasörünü inceleyelim
1001 ID'si ile eklenmiş.
Peki biz bir kullanıcıyı bir kullanıcı grubuna eklemek istersek o zaman ne yapacağız?
Usermod –aG logreaders kullanıcıadı ile kullanıcıyı logreaders grubuna ekledik. -a Append ekle anlamına gelir G ise group anlamına gelir.
Grubu silmek istiyorsak groupdel grupadı ile silebiliyoruz.
Peki ben grubu silmek istemiyorum sadece kullanıcıyı çıkarmak istiyorsam? Bu durumda –r parametresi remove anlamına gelir ve G parametresi grup anlamına gelir. Yani deyimimiz aslında usermod –rG logreaders kullanıcıadı üzerinden biz gruptan çıkarma sağladık.
Sudo Grubu:
Linux'ta sudo grubu, en yüksek yetkilere sahip kullanıcı grubudur ve Windows'taki Administrator hesabına benzer. Bir kullanıcıya yönetici yetkisi vermek istediğimizde, yeni bir root hesap açmak yerine onu sudo grubuna dahil ederiz. Böylece kullanıcı normal işlemleri kendi hesabıyla yapar, yönetici hakları gerektiğinde ise sudo komutunu kullanır.
Daha büyük sistemlerde ise daha hassas bir izolasyon gerekebilir. Örneğin bazı yöneticiler sadece belirli dizinlere erişebilirken, diğerleri tüm sistemi yönetebilecek şekilde farklı gruplar tanımlanabilir. Bu yöntem, sistem ölçeklenmesi ve güvenlik açısından avantaj sağlar.

Burada en aşağı kısımda bu satırlara dikkat ederseniz root hepsinde izinli bu şu anlama geliyor sudo grubuna dahil olan tüm kullanıcılar bu yetkilere sahip olabiliyor.
Linuxta Dosya Güvenliği Chown (Change Owner) Kullanımı: Linux üzerinde belli bir dizini veya işlemi biz kullanıcı değişimi yaptırmak için Chown komutunu kullanarak yapabiliyoruz.
Terminal ekranını inceleyelim. Chown ile ben test2 dosyasına kullanıcı olarak Hakan'ı ekledim sonrasında ise chgrp ile kullanıcı grubunu da Hakan olarak değiştirdim. Artık cybermachine grubuna ait değiller.
Artık test2 cybermachine grubuna veya kullanıcı alanına sahip olmadığından ben terminalden veri ekleyemiyorum dosya üzerine.
Dosya İzinleri: Dosya izinleri konusu bir işletim sisteminin temel yetkilendirmelerinden birisidir. Örneğin ortak bir dizininiz var ve buraya kullanıcılar genelde çalışmalarını yüklüyor. Bu durumda çalışmaların silinmesini istemediğinizde sadece yazdırma ve okuma yetkisi verirsiniz aynı durum burada da geçerlidir. Önceden yazdığımız ll komutu ile çıktılarımızı inceleyelim.
-rw-rw-r - - gibi ifadeler aslında kullanıcıların bu dosyalar üzerinde ki yetkilerini gösterir. Yani yazabiliyorlar, okuyabiliyorlar.
Linuxta genel kullanıcı izinlerinin açıklaması: -rw-rw-r - - - → Bu bir düz dosya (regular file). rw- (ilk üç harf) → sahibin (owner) izinleri: okuma (r) + yazma (w) var, çalıştırma (x) yok. rw- (ikinci üç harf) → grubun (group) izinleri: yine okuma + yazma var, çalıştırma yok. r - (son üç harf) → diğer kullanıcılar (others): sadece okuma yetkisi var. drwxrwxr-x d → Bu bir dizin (directory). rwx (ilk üç harf) → sahibin (owner) izinleri: okuma (r), yazma (w), çalıştırma/girme (x) → yani dizine girebilir, dosya ekleyebilir, silebilir. rwx (ikinci üç harf) → grubun (group) izinleri: aynı şekilde okuma, yazma, girme izni var. r-x (son üç harf) → diğer kullanıcılar (others) izinleri: okuma (r) ve girme (x) var ama yazma (w) yok → yani dosya silemez/ekleyemezler, sadece içeriği görebilirler. Dosya izinlerinin sayısal açıklaması: r ifadesi 2 üzeri 2 olarak hesap edilir = 4 w ifadesi 2 üzeri 1 olarak hesap edilir = 2 x ifadesi ise 2 üzeri 0 olarak hesap edilir = 1 rwx'in toplamı ise 7 olarak hesaplanır. r-x = 5 r ve x'in toplamı. (Çıkarma değil yanlış anlaşılmasın) rwx = 7

Örnek:
Bir dizin tanımladım.
Şimdi burada ne yaptım bunu açıklayayım.
u-x → kullanıcıdan çalıştırma izni kaldırılır.
g-r → gruptan okuma izni kaldırılır.
o-x → diğerlerinden çalıştırma izni kaldırılır.
Kullanıcıdan çalıştırma iznini kaldırdım gruptan okuma iznini kaldırdım ve diğerlerinden çalıştırma iznini kaldırdım.
· Kullanıcı (sahip): okuma ✅, yazma ✅, çalıştırma ❌ → dizini listeleyemez ama dosya oluşturabilir veya silebilir.
· Grup: okuma ❌, yazma ✅, çalıştırma ✅ → dosya ekleyip silebilir, ama içerikleri göremez.
· Diğerleri: okuma ✅, yazma ❌, çalıştırma ❌ → içerikleri görebilir ama hiçbir değişiklik yapamaz.
Bazı Temel Network Komutları:
ifconfig: Bu komut bize ağ kartımızın aldığı IP adres, ağ arayüzleri, mac adresleri gibi bilgileri gösterir. Ancak bu komut bazı kütüphanelerin eklenmesi ile çalıştırılabilir Linuxların çoğunda vardır ancak genelde bu komutun aynı işlevini yerine getiren kütüphane gerektirmeyen hali ise ip a'dır. Windows'ta karşılığı ipconfig olarak tanımlıdır.
ifconfig çıktısı. Aynı işlemi ip a ile de yapabilirsiniz.
Ping Komutu: Hedef sistemlerin açık olup olmadığını veya ICMP isteğini kabul edip etmediğini görmemizi sağlar.

iwconfig: Wireless kartı bilgilerini görmek için kullanıyoruz. Ancak kali şu an VMware ortamında çalıştığından kablolu bağlantı gibi görünüyor.

Whois: DNS kayıtları ile ilgili detaylı sorgu yapmamızı sağlar.

Arp: Arp komutu genelde L2 seviyesinde MAC adreslerinin hangi IP adreslerine atandığını tutar.

Users: Sistem üzerinde olan kullanıcıları gösterir.

Service: Genelde servisleri açmak, kapatmak, yeniden başlatmak veya aktif ve pasif servislerin durumunu görmek için kullanırız.
+ Olanlar aktif - olanlar pasif.
Wget: Web sayfalarından dosya indirmemize olanak sağlar.
Htop'u web sayfalarından indirdim. Htop CPU ve bellek kullanımını görüntüler.
Find: İşletim sistemi üzerinde herhangi bir spesifik dosyayı veya ayarı aradığımızda bulmak için kullanmaktayız. Find /home/cybermachine/Desktop/TalentCoders -name test3

Locate: Yine işletim sisteminde belli dosyaları bulmak için kullandığımız komutlardan birisi.

Farkları nedir Find ile? Locate genelde bir indexleme tabanlı sorgu yapar genelde veritabanı gibi yapılardan veri çekmek için daha elverişlidir. Arama yapmadan önce updatedb ile liste güncellemesi yaptırıp sonrasında liste üzerinden arama yaptırabiliriyoruz.

Evet bugünlük yazım bu kadardı. Bundan sonra ki serinin devamında pentest kısmına geçiş yapacağız. Buraya kadar uzun bir yazıyı okuduysanız teşekkür ederim.