Merhabalar,
Bugün yeni bir seriye başlıyorum. Serinin ismi, “Linux Öğreniyorum!”. Nerden çıktı bu derseniz? Hemen açıklayayım. Universite öğrencilerinden, yeni mezun arkadaşlardan bu konuda çok istek alıyorum. Ben de gençlere yardım, asli görevimizdir mottosuyla hareket etmek istedim. Bu serinin özelliği, yıllardır mentorlük yaptığım, Linux çalıştığım arkadaşların en zor anladığı konuları anlatacak olmam. Başlangıçta bazı konuların anlaşılması zor olabiliyor. Ama bu kritik konuları akla iyi yerleştirdikten sonra gerisi çorap söküğü gibi geliyor.
İlk bahsedeceğim konumuz, Linux dizin hiyerarşisi. Linux işletim sisteminde kök dizin tanımı vardır. Kök dizin, / olarak ifade edilir. Ben bu konuyu anlatırken ağaç örneğini kullanıyorum.
/ (kök dizin), ağacın köküdür. Kök, tüm sistemin başlangıç noktasıdır. Diğer tüm dallar ve yapraklar buradan filizlenir. Tıpkı bir ağaçta kökün hayati önemi olduğu gibi, Linux işletim sisteminde kök dizin de olmadan hiçbir şey var olamaz.
Ağacın dalları, kökten doğar ve farklı yönlere doğru büyür. Kökten çıkan bu dallar, Linux işletim sisteminde ana dizinlere (örn. /home, /etc, /var) benzetilebilir. Dalların her biri farklı işlevlere sahiptir. Örneğin: /home: Kullanıcıların kişisel bilgilerini saklayan dal. /etc: Yapılandırma dosyalarını tutan dal. /var: Loglar gibi sürekli değişen bilgileri tutan dal.
Yapraklar, dalların uç noktalarındaki bireysel dosyalardır. Tıpkı her yaprağın ağaca bir katkısı olduğu gibi, her dosyanın da sistemde belirli bir işlevi vardır. Örneğin, /home/asiye/ders_notları.txt dosyası, ağacın bir dalındaki yaprak gibi düşünülebilir.
Linux dizin yapısında, her dizin kendi içinde başka dizinler barındırabilir. Bu, bir dalın başka küçük dallar ve yapraklar çıkarmasına benzer.
Örnek:
/home (bir ana dal)
/home/asiye (ana dalın alt dalı)
/home/asiye/projeler (daha küçük bir alt dal)
proje1.txt (uçtaki yaprak)
Tam yol (absolute path), kökten (gövde) başlayarak yaprağa kadar giden açık bir rotadır.
Örneğin: /home/asiye/projeler/proje1.txt
Göreceli yol (relative path), bulunduğun dalı (dizini) baz alarak başka bir dala ya da yaprağa giden kısa bir yoldur.
Örneğin: projeler/proje1.txt (şu anda /home/asiye dizinindeyken).
Eğer bir dizin (dal) veya dosya (yaprak) silinirse, o kısım ağaçtan kopmuş gibi olur.
Örneğin: /etc dizinindeki kritik bir yapılandırma dosyasının silinmesi, sistemin düzgün çalışmamasına neden olur. Tıpkı ağacın önemli bir dalını kaybetmesi gibi!
Özetleyecek olursak,
Kök (/) = Ağacın kökü, her şey buradan büyür.
Ana Dizinler (/home, /etc, /var) = Ağacın ana dalları, her biri farklı bir işleve sahip.
Alt Dizinler = Dalların alt dalları, işlerin daha spesifik hale geldiği kısımlar.
Dosyalar = Yapraklar, bireysel görevleri yerine getirir.
Tam Yol (Absolute Path) = Gövdenin en altından yaprağa kadar olan uzun yol.
Göreceli Yol (Relative Path) = Bulunduğun yerden yaprağa giden kısa yol.
Şimdi gelin Linux işletim sistemimizde bunu görelim.
Yukardaki komut çıktılarından gördüğünüz gibi /asiye/home dizininde dizinler ve dosyalar oluşturduk. Ardından, “tree” komutuyla dizin hiyerarşisini gördük.
Yukardaki örneği daha anlaşılır olmak için yaptım. “cd ..” ile daima bir alt dizine geçersiniz. Hangi dizin altında olursanız olun, “cd ~” yaptığınızda daima kendi “home” dizininize gidersiniz. Yukarda bahsettiğim gibi, gitmek istediğiniz dizine tam yol yazarak, yani kökten (/) başlayarak gidebilirsiniz. Ek olarak bir de “.” var. “.” ise bulunduğunuz dizini ifade eder. Aşağıya farklı bir örnek ekledim.
Sanırım dizinler arasında ne şekilde dolaşırız konusu daha net oldu. Elinizi hızlandırmak için, kendinize mutlaka bir linux işletim sistemi kurun ve devamlı alıştırmalar yapın. Bakın aşağıda olan örnekte, “cd -“ kullandım. Bu komut, önceki bulunduğunuz dizine döner. Ek olarak, “cd” komutunu da tek başına kullandığınızda size yine “home” dizininize götürür.
Bugün anlatacağım ikinci önemli konum, başlangıç dosyalarıyla ilgili. Linux, kullanıcı giriş yaptığında veya bir terminal açıldığında bazı başlangıç dosyalarını okur. Bu dosyalar genelde kabuk (shell) yapılandırmasını içerir. Bu dosyalar kullandığınız kabuk programına göre (shell) değişiklik gösterir. Ben “/bin/bash” kullanıyorum.
Yukardaki çıktıda “.” ile başlayan dosyalara dikkat edelim. Her birinin ne anlama geldiğine bakalım.
.bash_history
- Görev: Bu dosya, terminalde çalıştırdığın tüm komutları bir liste halinde saklar. Kullanıcı, daha önce kullandığı komutlara hızlıca erişebilir.
- İzinler: -rw——- (sadece dosya sahibi okuyabilir ve yazabilir). Güvenlik amacıyla bu dosya sadece sahibi tarafından erişilebilir.
- Önemli: Geçmiş komutları görüntülemek için history komutunu kullanırsın. Özellikle önemli komutlar içerdiğinden, başkalarının bu dosyayı görmesi güvenlik riski yaratabilir.
.bash_logout
- Görev: Kullanıcı oturumu kapattığında çalıştırılacak komutları içerir. Örneğin, oturumu kapatırken terminal ekranını temizlemek için buraya komutlar eklenebilir.
- İzinler: -rw-r–r– (sahibi okuyabilir ve yazabilir, diğer herkes sadece okuyabilir). Genellikle tüm kullanıcılara açık, çünkü sistemde yaygın kullanılan logout işlemlerini içerir.
.bash_profile
- Görev: Kullanıcı oturumu açıldığında çalıştırılan kabuk yapılandırma dosyasıdır. Genellikle ortam değişkenleri ve başlangıç komutları buraya eklenir. Bu dosya özellikle giriş kabuklarında çalışır (örneğin, SSH üzerinden oturum açarken).
- İzinler: -rw-r–r– (sahibi okuyabilir ve yazabilir, diğer herkes sadece okuyabilir). Kullanıcı özel ortam değişkenleri tanımlamak için bu dosyayı düzenleyebilir.
- İpucu: Eğer .bash_profile çalışmazsa, yapılandırma .profile veya .bashrc üzerinden yüklenebilir.
.bashrc
- Görev: Her yeni terminal oturumunda (interaktif kabuk) çalıştırılan dosyadır. Alias (takma ad) tanımlamaları ve komut kısa yolları için sık kullanılır. Örneğin, alias ll=’ls -la’ gibi takma adlar buraya eklenir.
- İzinler: -rw-r–r– (sahibi okuyabilir ve yazabilir, diğer herkes sadece okuyabilir). Genellikle, terminal açıldığında komut satırını kişiselleştirmek için kullanılır.
- İpucu: Terminale özel yapılandırmalar (örn. renkli ls çıktısı) için burası iyi bir yerdir.
Bu dosyaların görevlerini aşağıdaki gibi özetleyebiliriz.
- .bash_profile → Giriş oturumunda çalışır. Uzun süreli işlemler için uygundur.
- .bashrc → Her yeni terminal oturumunda çalışır.
- .bash_logout → Kullanıcı oturumu kapatıldığında çalışır.
- .bash_history → Terminalde çalıştırdığın tüm komutları saklar.
Şimdi de her birinin ne yaptığını Pratik örneklerle görelim.
.bash_history dosyasından başlayalım.
“history” komutyla çalıştırdığımız komutları görelim.
.bash_logout dosyası için bir örnek yapalım.
Yukarda .bash_logout dosyamıza bir komut yazdık. Kullanıcıdan “logout” olup tekrar girdiğimizde, komutun çalıştığını gözlemledik.
.bash_profile dosyası için bir örnek yapalım.
Bu örnekte, PATH değişkenini güncelledim. Örneğe dikkatli bakın, “logout” olabilirdim değişikliğin yansıması için ama “logout” olmadan da dosyayı “.” İle çalıştırdım ve değişikliğin etki ettiğini gördüm. Bu dosyalarda yaptığınız değişikliklerin aktif olmasını isterseniz, “.” İle “logout” olmadan da aktifleştirebilirsiniz.
Son olarak .bashrc dosyasına bakalım.
Aşağıdaki alias tanımının kalıcı olması için, bu tanımı .bashrc dosyasına ekleyeceğim.
Asiye kullanıcısından “logout” oldum. Ama Rocky Linux’te ll için farklı bir alias tanımı olduğu için onu da sildim. Aşağıda olan adımları inceleyebilirsiniz.
Şimdi .bashrc dosyasına bu alias tanımını yazalım.
Gördüğünüz gibi dosyayı aktif yapmak için yine “.” kullandım. Arzu ederseniz, “source” komutunu da kullanabilirsiniz, “source .bashrc” şeklinde.
Gördüğünüz gibi “alias”, “logout” olup tekrar “login” olduktan sonra da çalıştı. Çünkü bu tanımı “.bashrc” dosyasına ekleyerek kalıcılığı sağladık.
Evet, bugün dersimizde, Linux dizin hiyerarşisini ve başlangıç dosyalarını anlattım. Bu dökümanı okuduktan sonra bilgilerin kalıcı olması için mutlaka alıştırma yapmalısınız. Hedefim, haftaya sizler için izinler, ACL, setuid, setgid, sticky bit, umask kavramlarını anlatmak. İkinci dersimizde görüşmek üzere. Alıştırma yapmayı unutmayın!
Sarav Asiye Yiğit – 19 Ekim 2024
Leave A Comment