Linux'a Başlarken: Yeni Başlayanlar İçin Temel Konular

Buradaki komutları Ubuntu 24.04 LTS ve Linux Mint 22 üzerinde denedim. Debian tabanlı diğer dağıtımlarda da aynı şekilde çalışacaktır; Fedora veya Arch kullanıyorsanız yalnızca paket yöneticisi komutları değişir.
1. Linux Nedir ve Neden Kullanmalıyız?
Evet, daha önce Linux kullanmamış kişiler için ilk başlığımız bazı soruları akla getirebilir. Mesela, şunu düşünebilirsiniz: “Zaten Windows gibi, çoğu işimi fena olmayan bir arayüze sahip işletim sistemiyle halledebiliyorum, neden buna gerek var?” Aslında, bir bakıma haklısınız. Ancak işin bir de şu tarafını düşünmek gerek: “Bu sistemi kullanıyorum ama sistem üzerinde kaynaklarımı ne kadar verimli kullanabiliyorum? Sistemi ihtiyaçlarıma göre ne kadar kişiselleştirebiliyorum? İşlerimi ne kadar hızlı, kolay ve verimli yapabiliyorum? Burada bulundurduğum kişisel verilerim ne kadar güvende?” gibi pek çok soru gelebilir.
Bu sorulara verilebilecek en iyi cevap ise şudur: “Eğer Linux kullanıyorsanız, bunların hiçbiri sorun değil çünkü her şeyi kendinize göre ayarlayabilirsiniz!” Şimdi ilk başlığımıza tekrar bakın. :) Eğer size mantıklı bir sebep sunabildiysem, artık “Linux nedir?” sorusuna geçebiliriz.
Linux, Helsinki Üniversitesi’nde bilgisayar bilimleri öğrencisi olan Finlandiyalı Linus Torvalds tarafından 1991 yılında, kendi kişisel bilgisayarında kullanım amacıyla geliştirmeye başladığı bir işletim sistemi çekirdeğidir. Çekirdek, kullanıcının ve programların taleplerini donanıma ileterek bilgisayarın bu talepleri yerine getirmesini sağlayan bir ara katmandır; belleği paylaştırır, süreçleri sıraya sokar, disk ve ağ erişimini yönetir.
Ancak çekirdek tek başına bir işletim sistemi değildir. Bu çekirdek ile birlikte GNU (GNU’s Not Unix) açık kaynaklı yazılımları (derleyici, kabuk, temel komutlar) bir araya gelerek bir işletim sistemi oluşturmuştur ve teknik olarak bu sisteme GNU/Linux, modern tabirle ise Linux veya Linux dağıtımları denir. Ayrıca, GNU, özünde bir felsefi anlayışı temsil eder. GNU’yu başka bir yazıda daha ayrıntılı olarak ele alacağım.
2. Linux Dağıtımları: Hangi Dağıtım Sizin İçin Uygun?
Linux kullanmaya veya denemeye karar verdiyseniz, özellikle yeni başlayanlar için kullanımı kolay ve kullanıcı dostu dağıtımlara göz atmak faydalı olacaktır. Burada dağıtımın “en iyi” olmasından çok, bir sorun yaşadığınızda arama motoruna yazdığınızda cevap bulabilmeniz önemlidir. İşte önerebileceğim birkaç seçenek:
- Ubuntu Desktop: Kullanımı kolay ve oldukça güçlü bir topluluk desteğine sahip bir dağıtımdır. GNOME masaüstü ortamıyla varsayılan olarak gelen Ubuntu, basit kurulumu ve geniş yazılım desteğiyle her seviyeden kullanıcı için ideal bir tercih olabilir. LTS sürümleri beş yıl boyunca desteklenir.
- Linux Mint: Son kullanıcı dostu bir diğer popüler seçenek olan Linux Mint, sade ve tanıdık arayüzüyle öne çıkar. Mint ekibi tarafından geliştirilen Cinnamon masaüstü ortamını varsayılan olarak sunar ve Ubuntu tabanlı olduğu için geniş bir yazılım deposuna sahiptir. Eğer eski bir donanım kullanıyorsanız, daha hafif olan XFCE sürümünü tercih etmenizi öneririm.
- Zorin OS: Windows’tan Linux’a geçiş yapmayı düşünen kullanıcılar için mükemmel bir tercihtir. Şık ve modern tasarımıyla dikkat çeken Zorin OS, Ubuntu tabanlıdır ve Core, Lite, Education gibi farklı kullanım senaryolarına uygun sürümler sunar.
- Fedora Workstation: Yazılımların en güncel sürümlerini kullanmak isteyenler için güzel bir seçenektir. Yeni teknolojileri ilk benimseyen dağıtımlardan biridir ve GNOME’un en saf hâlini sunar.
Ek olarak bahsettiğim bu dağıtımlar için farklı masaüstü ortamlarına sahip versiyonları da mevcuttur. Ki zaten başta belirttiğimiz gibi Linux’u istediğiniz gibi özelleştirebilirsiniz; masaüstü ortamını dağıtımdan bağımsız olarak sonradan da değiştirebilirsiniz.
Eğer Linux üzerinde fazlaca vakit geçirip kendinizi geliştirirseniz ya da “Linux’u arayüz olmadan terminal ile başlayıp sistemi baştan sona disk bölümlemesi, ağ yapılandırması, sürücü kurulumları, masaüstü ortamı kurulumları … gibi işleri de beraberinde detaylı bir şekilde öğrenmek istiyorum.” derseniz Arch Linux gibi oldukça güzel bir dağıtımı da sizlere önerebilirim. Yalnız şunu da ekleyeyim: Arch’ı ilk dağıtımınız olarak seçmeyin, çünkü asıl değeri temelleri zaten bildiğinizde ortaya çıkar. :)
Küçük bir ipucu: Kurulum yapmadan önce denemek isterseniz, indirdiğiniz ISO dosyasını Ventoy veya balenaEtcher ile bir USB belleğe yazıp “Try without installing” seçeneğiyle çalıştırabilirsiniz. Bu şekilde diskinize hiçbir şey yazılmaz.
3. Linux Terminali ve Komut Satırı: İlk Adımlar
Linux’u özel kılan en önemli özelliklerden biri terminal kullanımıdır. Terminal, işletim sisteminde arayüz yerine komutlarla daha gelişmiş ve verimli bir şekilde işlem yapmayı sağlar. Terminal kullanımına alıştığınızda, arayüzle yaptığınız işlemlerin ne kadar zaman aldığına şaşırabilir ve birçok işinizi terminal üzerinden halletmeye başlayabilirsiniz. :)
Şimdi CTRL + ALT + T kısa yolunu (çoğu Linux dağıtımında bu kısa yol aynıdır) kullanarak bir terminal açın ve komutlar üzerinde pratik yapmaya başlayalım.
Komutlara geçmeden önce, size hayatı kolaylaştıracak üç alışkanlıktan bahsetmek istiyorum:
TABtuşu: Komutun veya dosya adının başını yazıpTAB’a basın, kabuk gerisini sizin yerinize tamamlasın. İki kez basarsanız olası seçenekleri listeler. Yapacağınız yazım hatalarının çoğunu bu tuş önler.<komut> --help: Komutun özet kullanımını gösterir, hızlı bir bakış için idealdir.man <komut>: Komutun tam kılavuz sayfasını açar. İçinde/ile arama yapabilir,qile çıkabilirsiniz.
Aşağıda temel olarak bilmeniz gereken komutları listeledim. Daha fazlasını öğrenmek isterseniz, buraya bakabilirsiniz.
pwdbulunduğunuz dizinin tam yolunu yazar.ls -albulunduğunuz veya belirttiğiniz dizin içerisinde bulunan tüm dosyaları (gizli dosyalar dahil), detayları ile birlikte çıktısını verir.cd .., bulunduğunuz dizinden bir üst dizine çıkar.cd /ise sizi kök dizine çıkarır.cd ~sizi kendi ev dizininize (/home/kullanıcı_ismi) döndürür.cd <dizin_ismi>sizi istediğiniz bir dizin içerisine götürür.mkdir <dizin_ismi>yeni bir dizin oluşturmanızı sağlar.-pparametresi ile iç içe dizinleri tek seferde oluşturabilirsiniz.rmdir <dizin_ismi>dizini silmenizi sağlar; ancak yalnızca boş dizinlerde çalışır.touch <dosya_ismi.uzantısı>dosya yoksa yeni bir dosya oluşturur, varsa değiştirilme tarihini günceller.cp <dosya_ismi> <dizin_ismi>bir dosyayı belirttiğiniz konuma kopyalanmasını sağlar.cp -r <1.dizin_ismi> <2.dizin_ismi>birinci dizini ve tüm içeriğini ikinci dizin içerisine kopyalar.mv <dosya_ismi> <dizin_ismi>dosyayı belirttiğiniz konuma taşınmasını sağlar.mv <eski_isim> <yeni_isim>dosyayı veya klasörü yeniden isimlendirmenizi sağlar.rm <dosya_ismi>dosyayı silmenizi sağlar.rm -r <dizin_ismi>dizini içeriğiyle birlikte silmenizi sağlar.cat <dosya_ismi>dosya içeriğini terminale bastırır.less <dosya_ismi>uzun dosyaları sayfa sayfa okumanızı sağlar (qile çıkarsınız).head -n 20 <dosya_ismi>vetail -n 20 <dosya_ismi>dosyanın ilk ve son 20 satırını gösterir.tail -fise dosyayı canlı olarak takip etmenizi sağlar.grep "aranacak_kelime_cümle" <dosya_ismi>dosya içerisinde belirttiğiniz kelime veya cümleyi taramanızı sağlar.-rile bir dizinin tamamında,-iile büyük/küçük harf ayrımı yapmadan arayabilirsiniz.find . -name "*.log"ismine göre dosya aramanızı sağlar.nano <dosya_ismi>terminal içinde çalışan basit bir metin düzenleyici açar (CTRL+Okaydeder,CTRL+Xçıkar).sudo <komut_dosyası> veya <program_ismi>komut dosyasını veya programı yönetici yetkisi ile çalıştırmanızı sağlar.historydaha önce yazdığınız komutları listeler.man <komut_ismi> veya <program_ismi>komut veya program hakkında detaylı bir bilgi ekranı çıkarır.
Önemli Uyarı: rm komutunun geri dönüşü yoktur, sildiğiniz dosya çöp kutusuna gitmez. Özellikle sudo rm -rf yazarken belirttiğiniz yolu iki kez okuyun; sudo rm -rf / veya sudo rm -rf ~ gibi bir komut sisteminizi ya da tüm kişisel dosyalarınızı geri dönüşü olmayacak şekilde siler. Emin değilseniz aynı yolu önce ls ile deneyin, karşınıza çıkan liste sileceğiniz şey olacaktır.
Bu komutlar, terminali kullanmaya başlamak için yeterli bir başlangıçtır. Ancak Linux üzerinde, daha pek çok araç ve komut vardır. Hepsini öğrenmek elbette zaman alacaktır, ancak kullandıkça pratik kazanmaya ve etkili bir şekilde çalışmaya başlayacaksınız.
4. Dosya ve Dizin Yapısı: Linux’un Temel Dosya Sistemi
Linux dosya sisteminin en temel özelliklerinden biri, her şeyin bir dosya olarak temsil edilmesidir. Bu, disklerden donanıma, süreçlerden yapılandırmalara kadar tüm bileşenlerin birer dosya gibi davranması anlamına gelir. Örneğin, sistem disklerinizi kullanabilmek için /dev/sda1 gibi bir dosyayı kullanır; günümüzde yaygınlaşan NVMe SSD’lerde ise bu dosya /dev/nvme0n1p1 şeklinde görünür.
Bir diğer önemli fark ise şudur: Windows’taki gibi C:, D: sürücü harfleri yoktur. Tek bir ağaç vardır, kökü / dizinidir ve bütün diskler bu ağacın bir dalına bağlanır. Şimdi, bu hiyerarşideki temel dizinlerin işlevlerine bir göz atalım:
- Kök Dizin (
/): Sistem dosya yapısının en üst düzeyidir ve her şey buradan başlar. Tüm diğer dizinler bunun altında bulunur. /binve/sbin: Temel kullanıcı ve sistem komutlarının bulunduğu yerdir. Örneğin,ls,mkdir,rm,mountgibi komutlar burada yer alır. Modern dağıtımlarda bu dizinler artık/usr/binve/usr/sbindizinlerine birer sembolik bağlantıdır (usrmerge), yani aynı yeri gösterirler./boot: Sistem önyüklemesi sırasında gerekli olan çekirdek, önyükleyici (GRUB) yapılandırmaları ve diğer dosyaları içerir./dev: Tüm aygıt dosyaları (örneğin, sabit diskler, USB cihazları) burada bulunur. Aygıtlar birer dosya olarak temsil edilir./etc: Sistem yapılandırma dosyalarının bulunduğu yerdir. Örneğin, DNS ayarları için/etc/resolv.conf, disk bağlama ayarları için/etc/fstabkullanılır./home: Kullanıcıların kişisel dosyaları ve ayarları buradadır. Her kullanıcı için ayrı bir alt dizin oluşturulur (örneğin,/home/alice)./lib: Paylaşılan kütüphaneler ve çekirdek modülleri içerir. Windows’taki DLL dosyalarına benzer şekilde çalışır. Bu dizin de/usr/lib’e bağlıdır./media: USB bellek, SD kart gibi çıkarılabilir aygıtların otomatik olarak bağlandığı dizindir./mnt: Geçici olarak, elle bağlanacak dosya sistemleri için kullanılır. Örneğin, harici bir disk buraya bağlanabilir./opt: Depo dışından kurulan üçüncü taraf yazılımlar için ayrılmış bir alandır./proc: Sistem süreçleri, bellek ve donanım yapılandırmaları gibi bilgileri barındıran sanal bir dosya sistemidir. Örneğin,cat /proc/cpuinfoile işlemci bilgilerini görebilirsiniz./root:rootkullanıcısının ev dizinidir. Kök dizin olan/ile karıştırmayın./run: Sistem açıldıktan sonra biriken çalışma zamanı verilerini tutar ve her yeniden başlatmada sıfırlanır./srv: Sunucu servislerinin (web, FTP vb.) dışarıya sunduğu veriler burada bulunur./sys: Çekirdeğin donanımla konuştuğu sanal dosya sistemidir. Pil durumu, ekran parlaklığı gibi değerler buradan okunur ve yazılır./tmp: Geçici dosyaların depolandığı alandır. Sistem yeniden başlatıldığında buradaki dosyalar silinir./usr: Kurulu yazılımların büyük bir kısmı buradadır; programlar, kütüphaneler, ikonlar ve kılavuz sayfaları bu dizinde yer alır./var: Sistem logları, e-posta, önbellek ve diğer değişken dosyalar bu dizinde bulunur. Güvenlikle ilgili analizler için/var/logaltındaki log dosyaları oldukça önemlidir.
Not: Kullanıcıların ev dizinlerinin varsayılan izni dağıtıma göre 755 veya 750 olabilir. Eğer 755 ise sistemdeki diğer kullanıcılar dosyalarınızın içeriğini okuyabilir. Tek başınıza kullandığınız kişisel bilgisayarda bu bir sorun değildir, ancak paylaşımlı bir makine kullanıyorsanız chmod 700 ~ komutu ile bu erişimi kapatmanızı öneririm.
Bu temel dizinler, Linux dosya sisteminin sadece bir kısmını oluşturuyor. Daha fazlasını öğrenmek ve detaylarına inmek için bu kaynağı inceleyebilir ya da doğrudan man hier sayfasına bakabilirsiniz. Unutmayın, Linux dünyası keşfedilmeyi bekleyen devasa bir okyanus gibidir. :)
5. Boru ve Yönlendirme: Terminalin Asıl Gücü
Terminali gerçekten güçlü kılan şey, komutları tek tek çalıştırmanız değil, onları birbirine bağlayabilmenizdir. Aşağıdaki dört işleci öğrendiğiniz an terminal sizin için bambaşka bir araca dönüşecek:
komut > dosya # Çıktıyı dosyaya yazar (dosyanın mevcut içeriğini SİLER).
komut >> dosya # Çıktıyı dosyanın sonuna EKLER.
komut1 | komut2 # komut1'in çıktısını komut2'ye girdi olarak verir.
komut1 && komut2 # komut1 başarılı olursa komut2'yi çalıştırır.
Biraz daha somutlaştıralım:
ls -al /var/log | grep "syslog" # Sadece syslog ile ilgili satırları gösterir.
ps aux | grep firefox # Çalışan Firefox süreçlerini bulur.
history | grep apt # Daha önce yazdığınız apt komutlarını getirir.
du -sh * | sort -h | tail -n 5 # Bulunduğunuz dizindeki en büyük 5 öğeyi listeler.
sudo apt update && sudo apt upgrade # İlki başarılı olursa ikincisini çalıştırır.
Gördüğünüz gibi, bildiğiniz üç beş komutu birleştirerek arayüzde dakikalar sürecek işleri tek satıra indirebiliyorsunuz. :)
6. Süreç ve Kaynak İzleme
Sisteminiz yavaşladığında ya da bir program takıldığında ilk bakacağınız yer burasıdır. Aşağıdaki komutlar günlük kullanımda işinizi fazlasıyla görecektir:
htopetkileşimli bir süreç ve kaynak izleyicisidir.sudo apt install htopile kurabilirsiniz.topher sistemde hazır bulunan klasik alternatiftir.ps aux | grep <isim>belirli bir süreci ve PID numarasını bulmanızı sağlar.kill <PID>sürece kapanma sinyali gönderir.kill -9 <PID>süreci zorla sonlandırır; bunu son çare olarak kullanın.df -hdisk bölümlerinin doluluk oranını gösterir.du -sh <dizin_ismi>bir dizinin kapladığı toplam alanı hesaplar.free -hRAM ve takas (swap) kullanımını gösterir.lsblkdisk ve bölüm ağacını listeler.uname -açekirdek sürümünüzü ve mimarinizi gösterir.
Buradaki -h parametresi “human readable” anlamına gelir; yani boyutları bayt yerine MB/GB olarak gösterir. Gördüğünüz her yerde kullanmanızı öneririm. :)
7. Kullanıcı Yönetimi: Yeni Kullanıcılar ve İzinler
Linux’u günlük kullanım için öğreniyorsanız, kullanıcı ve grup işlemlerine sık sık ihtiyaç duymayabilirsiniz. Ancak bu konuları temel düzeyde bilmek, sistem yönetimi açısından önemlidir. Hatta izin sistemini anlamak, bir bakıma Linux’u anlamanın yarısıdır. Aşağıda, kullanıcı ve grup oluşturma, düzenleme, silme ve izin yönetimi hakkında temel komutları bulabilirsiniz.
Kullanıcı ve Grup İşlemleri
-
Yeni bir kullanıcı oluşturmak:
sudo adduser <kullanıcı_ismi>Debian ve Ubuntu tabanlı dağıtımlarda önerdiğim yöntem budur. Ev dizinini oluşturur, şifreyi size sorar ve varsayılan ayarları kendisi halleder. Daha alt seviye bir alternatif isterseniz
sudo useradd -m <kullanıcı_ismi>komutunu da kullanabilirsiniz; buradaki-mparametresi/homedizini altında o kullanıcıya özel bir dizin yaratır. -
Kullanıcı için şifre belirlemek veya değiştirmek:
sudo passwd <kullanıcı_ismi>Oluşturulan kullanıcının şifresini ayarlamanızı veya mevcut bir şifreyi değiştirmenizi sağlar.
-
Yeni bir grup oluşturmak:
sudo groupadd <grup_ismi>Belirtilen isimle yeni bir grup oluşturur.
-
Bir grubu silmek:
sudo groupdel <grup_ismi>Belirtilen grubu sistemden kaldırır.
-
Bir kullanıcıyı gruba eklemek:
sudo usermod -aG <grup_ismi> <kullanıcı_ismi>Belirtilen kullanıcıyı, belirtilen gruba ekler. Burada:
-a(append): Kullanıcıyı mevcut gruplarına ek olarak yeni bir gruba dahil eder.-G(group): Grubu belirtir.
Not: Eğer
-aparametresini kullanmazsanız, kullanıcıyı yalnızca belirttiğiniz gruba atar ve diğer tüm gruplarından çıkarır. Bu da kullanıcıyı ses, ağ ya da disk erişiminden koparabilir; bu yüzden her zaman-aGşeklinde kullanın. Ayrıca grup değişiklikleri, kullanıcı oturumunu kapatıp açtıktan sonra geçerli olur. -
Bir kullanıcıyı gruptan çıkarmak:
sudo gpasswd -d <kullanıcı_ismi> <grup_ismi>Kullanıcıyı belirttiğiniz gruptan kaldırır. Bir kullanıcının hangi gruplarda olduğunu görmek için ise
groups <kullanıcı_ismi>komutunu kullanabilirsiniz. -
Bir kullanıcıyı ve ona ait dizini silmek:
sudo userdel -r <kullanıcı_ismi>Kullanıcıyı sistemden kaldırır.
-rparametresi, kullanıcının/home/<kullanıcı_ismi>dizinini ve içeriklerini de siler.
İzin İşlemleri
Linux dosya sistemi üzerinde her dosya ve dizin belirli izinlerle yönetilir. İzinler, dosyaların kimler tarafından okunabileceğini, yazılabileceğini ve çalıştırılabileceğini belirler. Aşağıdaki görsellerde bu izinlerin nasıl çalıştığını inceleyebilirsiniz:


ls -l çıktısındaki bir satırı birlikte okuyalım:
-rw-r--r-- 1 alice developers 4096 Nov 7 14:22 notlar.txt
│└─┬┘└┬┘└┬┘ │ │ │
│ │ │ │ │ │ └── Grup
│ │ │ │ │ └─────────── Sahip
│ │ │ │ └──────────────── Sabit bağlantı (hard link) sayısı
│ │ │ └──────────────────── Diğer tüm kullanıcıların izinleri
│ │ └─────────────────────── Grup üyelerinin izinleri
│ └────────────────────────── Dosya sahibinin izinleri
└───────────────────────────── Dosya türü
Satırın en başındaki sembol bize dosyanın türünü söyler:
-sembolü bir dosyayı,dsembolü ise bir dizini ifade eder.lsembolü bir sembolik bağlantıyı (symlink), yani başka bir yere işaret eden bir kısayolu belirtir.bvecsembolleri ise blok ve karakter aygıtlarını gösterir.
Not: Burada sık yapılan bir hatayı düzeltmek istiyorum: satırdaki 1 sayısı symlink göstergesi değildir. O sayı, dosyaya işaret eden sabit bağlantı (hard link) sayısıdır ve normal dosyalarda genellikle 1, dizinlerde 2 veya daha fazladır. Bir dosyanın symlink olduğunu, satırın en başındaki l harfinden anlarsınız.
İzinler ise üçer haneli gruplar halinde sıralanmıştır:
- İlk üç hane: Dosya sahibinin izinlerini temsil eder.
- İkinci üç hane: Grup üyelerinin izinlerini temsil eder.
- Son üç hane: Diğer tüm kullanıcıların izinlerini temsil eder.
Her izin, aşağıdaki sembollerle gösterilir:
r(read): Okuma izni (Değeri: 4)w(write): Yazma izni (Değeri: 2)x(execute): Çalıştırma izni (Değeri: 1)
İzinlerin toplamı, sayısal bir değerle ifade edilir. Örneğin:
7= Okuma (4) + Yazma (2) + Çalıştırma (1)6= Okuma (4) + Yazma (2)5= Okuma (4) + Çalıştırma (1)4= Sadece okuma (4)
Küçük ama önemli bir ayrıntı: dizinlerde x izni “içine girebilme” anlamına gelir. Yani bir dizinde r izniniz olup x izniniz yoksa, içeriğini listeleyebilir ama içindeki dosyalara erişemezsiniz.
İzin ve Sahiplik Yönetimi
Linux’ta dosya ve dizin izinlerini değiştirmek için chmod ve sahipliklerini değiştirmek için chown komutları kullanılır.
chmod Komutu (İzin Değiştirme)
-
Sembolik olarak izin eklemek veya kaldırmak:
chmod u+x <dosya_ismi> # Dosya sahibine çalıştırma izni ekler. chmod g-w <dosya_ismi> # Grubun yazma iznini kaldırır. chmod o-rwx <dosya_ismi> # Diğer kullanıcıların tüm izinlerini kaldırır. chmod a+r <dosya_ismi> # Herkese okuma izni verir.Burada
udosya sahibini (user),ggrubu (group),odiğerlerini (others),aise hepsini (all) ifade eder.+izin ekler,-kaldırır,=ise tam olarak belirttiğiniz izne ayarlar. -
Tüm kullanıcı izinlerini sayısal olarak ayarlamak:
chmod 755 <dosya_ismi>Buradaki sayıların anlamı:
7= Okuma (4) + Yazma (2) + Çalıştırma (1): Dosya sahibi tüm yetkilere sahip.5= Okuma (4) + Çalıştırma (1): Grup üyeleri sadece okuma ve çalıştırma yetkilerine sahip.5= Diğer kullanıcılar da sadece okuma ve çalıştırma yetkilerine sahip.
Sık kullanacağınız birkaç kalıbı da not düşeyim:
644normal dosyalar için,600SSH anahtarları gibi gizli dosyalar için,755ise script ve programlar için uygundur. Bir dizinin tamamına uygulamak isterseniz-Rparametresini kullanabilirsiniz.
Önemli Uyarı: “İzin hatası aldım, 777 yapayım da geçsin” en yaygın acemi hatasıdır. Bu komut dosyayı sistemdeki herkes tarafından yazılabilir ve çalıştırılabilir hâle getirir. Doğru çözüm neredeyse her zaman sahipliği düzeltmektir, izni sonuna kadar açmak değil.
chown Komutu (Sahiplik Değiştirme)
-
Bir dosyanın sahibi ve grubunu değiştirmek:
chown <sahip_ismi>:<grup_ismi> <dosya_ismi>Örnek:
sudo chown john:developers myfile.txtBu komut,
myfile.txtdosyasının sahibinijohn, grubunudevelopersolarak ayarlar. Bir dizinin tamamı içinsudo chown -R john:john /dizin/yoluşeklinde kullanabilirsiniz.
Linux’ta kullanıcı ve grup yönetimi ile birlikte bu izinler, sistem güvenliğini sağlamanın temel araçlarıdır. Ancak unutmayın, Linux güvenliği sadece bunlarla sınırlı değildir. İleride güvenlik konusuna özel bir yazı hazırlayacağım. Şimdi sıradaki başlığımıza geçebiliriz. :)
8. Paket Yönetimi: Yazılımları Yükleme ve Güncelleme
Linux’ta yazılım kurmak için internetten .exe indirmezsiniz; dağıtımınızın imzalı deposundan kurarsınız. Bu hem daha güvenlidir hem de tüm güncellemelerinizi tek bir yerden yönetmenizi sağlar.
İlk başladığınızda Ubuntu gibi Debian tabanlı dağıtımları kullanmanızı öneririm, çünkü kullanımı oldukça basittir. Bu yüzden burada, genele hitap edebilmek için apt (Advanced Package Tool) paket yönetim aracının kullanımını göstereceğim.
sudo apt updatekomutu ile paket depomuzu güncellerken,sudo apt upgradekomutu ile sistemdeki tüm paketleri güncelleyebiliriz. Bir kurulum yapmadan önce mutlakaupdatekomutunu çalıştırın.sudo apt install <paket_ismi>komutu ile istediğimiz bir paketi veya programı yükleyebiliriz. Bir paketi silmek için isesudo apt remove <paket_ismi>komutunu kullanabiliriz.- Depoda bir arama yapmak istiyorsak, bunu
apt search <paket_ismi>komutu ile gerçekleştirebiliriz. Bir paket hakkında daha detaylı bilgi almak için iseapt show <paket_ismi>komutu bize yardımcı olacaktır. Bu iki komut içinsudoyetkisine ihtiyacınız yoktur. - Eğer bir paketi veya programı, ayar dosyalarıyla birlikte tamamen silmek isterseniz,
sudo apt purge <paket_ismi>komutunu kullanabilirsiniz. - Ayrıca, sistemde artık ihtiyaç duyulmayan ve gereksiz yere duran bağımlılıkları temizlemek için
sudo apt autoremovekomutunu kullanarak ortamınızı düzenleyebilirsiniz.
Not: purge komutu bağımlılıkları silmez; yalnızca paketin kendisini ve ayar dosyalarını kaldırır. Geride kalan gereksiz bağımlılıkları temizleyen komut autoremove’dur. İkisi sıkça karıştırılır.
Sık sorulan bir soruya da burada cevap vereyim: apt mi kullanmalı, apt-get mi? İkisi de çalışır. apt insan kullanımı için tasarlanmıştır, renkli çıktı ve ilerleme çubuğu sunar; apt-get ise script’lerde tercih edilir çünkü davranışı sürümler arasında değişmez. Terminalde rahatlıkla apt kullanabilirsiniz.
Evet, komutlarımız bu kadar. Ancak önemli bir noktaya daha değinmek isterim. dpkg komutu, Debian’a özel bir paket kurulum aracıdır. Ancak, apt kullanımı, dpkg’ye kıyasla daha kolay ve pratik bir seçenektir. İnternet üzerinden .deb uzantılı bir paket indirdiyseniz, bunu kurmanın en temiz yolu yine apt’tır, çünkü bağımlılıkları da sizin yerinize çözer:
sudo apt install ./indirdiginiz_paket.deb # Önerdiğim yöntem; bağımlılıkları da çözer.
sudo dpkg -i ./indirdiginiz_paket.deb # Alt seviye alternatif.
sudo apt --fix-broken install # dpkg sonrası eksik kalan bağımlılıkları tamamlar.
Daha fazla bilgi için buraya göz atmanız faydalı olacaktır.
Son olarak snap ve flatpak’ten de bahsetmek gerek. Ubuntu’da bazı uygulamalar (Firefox gibi) snap olarak gelir; bunlar bağımlılıklarını kendi içinde taşıyan izole paketlerdir. Flatpak ise dağıtımdan bağımsız bir alternatiftir ve Flathub deposuyla kullanılır. Depoda bulamadığınız güncel bir uygulamayı çoğunlukla Flathub’da bulabilirsiniz. Diğer dağıtımlarda ise araçlar değişir: Fedora’da dnf, Arch’ta pacman, openSUSE’de zypper kullanılır.
9. Sistem Güncellemeleri ve Bakımı
Sistem güncellemeleri ve bakımı, Linux sistemlerinin güvenli, stabil ve verimli çalışabilmesi için oldukça önemlidir. Bu konular bazen karmaşık olabilir, fakat burada, fazla kafanızı karıştırmadan neler yapılması gerektiğini adım adım açıklamaya çalışacağım. Sistemimizin sağlıklı çalışması için beş önemli başlık bulunmaktadır:
- Yedek almak: Sistem üzerinde yaşanan herhangi bir sorun, çökme gibi durumlar ve sonrasında verilerimizin kaybolmasını önlemek için yedek almak her zaman öncelikli olmalıdır.
- Güncellemeleri yapmak: Güvenlik açıklarını kapatmak ve sistemin daha stabil çalışmasını sağlamak için düzenli güncellemeler yapmak çok önemlidir.
- Disk temizliği: Sistem performansını artırmak, boş alanları daha verimli kullanmak için rutin disk temizliği yapmak gereklidir.
- Güvenlik önlemleri ve yapılandırmaları: Sistemi iç ve dış tehditlerden izole etmek ve güvenliği sıkılaştırmak (kişisel tercihlere bağlı olarak) çok önemlidir.
- Sistem günlüğü okuma ve analizi: Sistemdeki uygulamaların, kullanıcıların ne yaptığını takip etmek ve herhangi bir sorunu tespit etmek için günlüklerin incelenmesi faydalıdır.
A. Yedek Almak
Yedekleme, veri kaybını önlemek için temel bir adımdır. Yedek almak için kullanabileceğiniz yöntemler tamamen size bağlıdır, ancak en az iki farklı yedekleme yöntemi kullanmanızı öneririm.
- İlk olarak, yedeklerinizi uzak bir sunucuda (örneğin, duplicity, restic veya rclone gibi araçlar kullanabilirsiniz) veya bulut servislerinde (Google Drive, Dropbox, OneDrive vb.) saklayabilirsiniz.
- İkinci olarak, fiziksel bir yedekleme alanı (taşınabilir HDD veya SSD) kullanabilirsiniz. SSD, hız açısından daha iyi bir seçenek olsa da maliyetli olabilir; uzun süreli arşiv yedeği için HDD hâlâ mantıklıdır.
Önerilen araçlar:
- Timeshift sistem anlık görüntüsü (snapshot) alır. Bozulan bir güncellemeden geri dönmek için birebirdir.
- DejaDup kişisel verilerinizi şifreli ve artımlı olarak yedekler, zamanlanabilir.
- PikaBackup yine kişisel veri yedeği içindir; Borg tabanlıdır ve arayüzü oldukça sadedir.
Burada karıştırılan bir noktayı vurgulamak istiyorum: Timeshift bir kişisel veri yedekleme aracı değildir. Sistemin kendisini geri almak için tasarlanmıştır. En ideal kurulum, sistem için Timeshift’i, kişisel dosyalarınız için ise DejaDup veya PikaBackup’ı birlikte kullanmaktır.
Önemli Uyarı: Büyük veya küçük çaplı fark etmeksizin, güncellemeler yapmadan önce her zaman yedeğinizi alın ve aldığınızdan emin olun. Test etmediğiniz bir yedek, yedek sayılmaz.
B. Sistem Güncellemeleri
Sistem güncellemelerini yapmak, güvenlik risklerini azaltmak ve sistemin stabil çalışmasını sağlamak için son derece önemlidir. Aşağıda, sisteminizi güncel tutmak için kullanabileceğiniz komutları bulabilirsiniz:
sudo apt update # Depo listesini günceller ve mevcut paketlerin en son sürümlerini denetler.
sudo apt upgrade # Paketleri günceller, ancak sistemin kararlılığını korumak için paket kaldırmaz.
sudo apt full-upgrade # Tüm güncellemeleri yükler; gerekirse bazı paketleri kaldırabilir veya değiştirebilir.
sudo apt autoremove # Artık ihtiyaç duyulmayan, bağımlılığı kalmayan eski paketleri kaldırarak sistemi temizler.
Otomatik Güncellemeler: Güvenlik yamalarını elle takip etmek istemiyorsanız unattended-upgrades aracını kullanabilirsiniz. Bu aracı kurmak ve yapılandırmak için aşağıdaki adımları izleyebilirsiniz:
sudo apt update && sudo apt upgrade # Depoyu ve paketleri günceller.
sudo apt install unattended-upgrades # Bu paketi yükleyin (Debian tabanlı dağıtımlarda genellikle yüklüdür).
sudo apt install powermgmt-base # (Opsiyonel) Dizüstü bilgisayarlarda pil durumuna göre davranmasını sağlar.
sudo dpkg-reconfigure --priority=low unattended-upgrades # Otomatik güncellemeleri etkileşimli olarak etkinleştirir.
sudo unattended-upgrades --dry-run --debug # Otomatik güncellemelerin doğru çalışıp çalışmadığını kontrol etmek için kullanın.
sudo systemctl status unattended-upgrades # Servisin çalışıp çalışmadığını kontrol edin.
Aracın ayrıntılı davranışı /etc/apt/apt.conf.d/50unattended-upgrades dosyasından yapılandırılır. Güncelleme sonrası sistemin otomatik olarak yeniden başlatılmasını isterseniz, bu dosyadaki şu satırları açmanız yeterli olacaktır:
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";
Ekstra Komutlar (bunlar yalnızca bu araç için değil, tüm systemd servisleri için geçerlidir):
sudo systemctl start unattended-upgradesservisi başlatır.sudo systemctl stop unattended-upgradesservisi durdurur.sudo systemctl enable unattended-upgradesservisi sistem başlangıcında başlatacak şekilde ayarlar.sudo systemctl disable unattended-upgradesservisi başlangıçta başlatılmayacak şekilde devre dışı bırakır.sudo systemctl restart unattended-upgradesservisi yeniden başlatır.sudo systemctl status unattended-upgradesservisin durumunu ve son günlüklerini gösterir.
C. Disk Temizliği
Disk temizliği yapmak, boş alanları daha verimli kullanmak ve sistem performansını artırmak için oldukça önemlidir. Ancak bu işlemleri yaparken dikkatli olmalısınız; çünkü bazı geçici dosyaları silmek, kullandığınız uygulamalarda veya sistemde sorunlara yol açabilir. Bu yüzden her zaman yedek almayı unutmayın.
Aşağıdaki komutlar ve araçlar disk temizliği için kullanılabilir:
sudo apt autoremove --purgegereksiz, artık kullanılmayan bağımlılıkları ayarlarıyla birlikte temizler.du -sh /var/cache/aptAPT önbellek boyutunu görmenizi sağlar.sudo apt cleanAPT önbelleğini tamamen temizler.sudo apt autocleanartık indirilemeyen eski paketleri temizler.journalctl --disk-usageJournal günlüklerinin disk kullanımını gösterir.sudo journalctl --vacuum-time=7d7 günden eski günlükleri siler.sudo journalctl --vacuum-size=200Mgünlükleri 200 MB sınırında tutar.df -hişiniz bittiğinde sonucu kontrol etmenizi sağlar.
Eski çekirdekler de zamanla ciddi yer kaplar; sudo apt autoremove --purge komutu bunları genellikle temizler. Yalnız en az bir önceki çekirdeği sisteminizde bırakın, çünkü yeni çekirdek açılmazsa geri dönebilmeniz için ona ihtiyacınız olacak.
Yinelenen Dosyalar:
-
fdupes aracıyla aynı dosyaları tespit edip silebilirsiniz:
sudo apt install fdupes fdupes -r /belirttiğiniz/dizin # Belirtilen dizindeki yinelenen dosyaları listeler. fdupes -rd /belirttiğiniz/dizin # Hangilerinin kalacağını tek tek sorarak silmenize olanak tanır.Not: Bu araçta
-Nparametresini kullanmayın; size hiçbir şey sormadan siler.
Grafik Araçlar:
BleachBit, geçici dosyalar, önbellekler ve çerezler gibi gereksiz verileri silerek disk alanı boşaltır. Güvenli temizleme işlemleriyle gizliliği korur ve birçok popüler uygulamanın verilerini temizleyebilir. Hem Windows hem de Linux için uygundur; hâlâ aktif olarak geliştirilmektedir. Yalnızca neyi sildiğini bilmeden kutuları işaretlemeyin.
Sweeper, basit bir Linux sistem temizleme aracıdır, gereksiz dosyaları silerek sistem performansını artırır. Hızlı ve kolay kullanım sunar, ancak daha ileri düzey özelliklere sahip araçlara kıyasla daha sınırlıdır. Genellikle KDE masaüstü ortamı ile birlikte kullanılır.
Stacer, Linux sistemleri için açık kaynaklı bir sistem izleme ve temizleme aracıdır. CPU, RAM, disk ve ağ kullanımını izler, gereksiz dosyaları temizler ve başlatma uygulamalarını yönetir. Ancak, geliştirilmesi durdurulmuş olduğu için güncelleme gelmemektedir; yeni sürümlerde sorun çıkarabilir.
Ubuntu Cleaner, sistemdeki gereksiz dosyaları, paket önbelleklerini ve eski çekirdekleri temizler. Kullanımı basit ve kullanıcı dostudur, ancak bakımı seyrek yapılmaktadır.
Açıkçası şunu da söylemem gerek: yukarıda verdiğim apt ve journalctl komutları, bu araçların yaptığı işin büyük bir kısmını zaten daha güvenli bir şekilde yapıyor. :)
D. Sistem Güvenliği
Sistem güvenliği, özellikle halka açık ortamlarda sıkça vakit geçiren dizüstü kullanıcıları için kritik öneme sahiptir. Temel güvenlik önlemleri almak, özellikle güvenlik duvarı yapılandırmaları, sisteminizi dış tehditlere karşı korumanın ilk adımıdır. Bu bağlamda, güvenlik duvarı kurulumları için en popüler araçlardan ikisi firewalld ve UFW (Uncomplicated Firewall) olup, UFW daha kullanıcı dostu ve basit yapılandırmalar sunar.
UFW (Uncomplicated Firewall) Kurulumu ve Yapılandırması
UFW, kullanımı basit ve etkili bir güvenlik duvarı aracıdır. Terminal üzerinden kolayca yapılandırılabilir ve bu araç, gelen ve giden ağ trafiğini yöneterek sadece güvenilir bağlantılara izin verir.
-
Kurulum:
sudo apt install ufw # UFW'yi kurar (Ubuntu'da genellikle kuruludur). -
Varsayılan Kurallar: Masaüstü kullanıcıları için önerdiğim ayarlardır:
sudo ufw default deny incoming # Sisteme gelen tüm bağlantıları reddeder. sudo ufw default allow outgoing # Sistemden çıkan tüm bağlantılara izin verir. -
Durum Kontrolü ve Başlatma:
sudo ufw enable # UFW'yi aktif eder. sudo ufw status verbose # UFW'nin aktif olup olmadığını ve kuralları gösterir.Bu birkaç satır, tipik bir masaüstü için doğru varsayılandır: dışarıdan hiçbir bağlantı kabul edilmez, sizin başlattığınız bağlantılar sorunsuz çalışır.
-
Uygulama İzinleri: Bağlantıların yönetilmesi için belirli servisleri izinli hale getirebilirsiniz:
sudo ufw allow ssh # Bir servisi dışarıya açar (veya: sudo ufw allow 22/tcp). sudo ufw allow 8080/tcp # Belirli bir portu açar. sudo ufw deny <servis_ismi> # Bir servisi dışarıdan erişime kapatır. sudo ufw status numbered # Kuralları numaralandırarak listeler. sudo ufw delete <numara> # Belirli bir kuralı siler. sudo ufw reset # Yapılan tüm ayarları sıfırlar.
Önemli Uyarı: sudo ufw reset komutu tüm kuralları silmekle kalmaz, güvenlik duvarını da devre dışı bırakır. Ayrıca uzak bir sunucuda ufw enable yapmadan önce SSH portunun açık olduğundan mutlaka emin olun; aksi halde kendinizi sunucudan kilitlersiniz. Bir de şunu ekleyeyim: UFW kuralları anında uygulanır, her kural sonrası reload yapmanıza gerek yoktur.
UFW’nin kullanım kolaylığı, özellikle yeni başlayanlar için harikadır. Ancak daha gelişmiş özellikler için firewalld kullanılabilir, özellikle ağ yapısının daha karmaşık olduğu durumlarda.
Ekstra Güvenlik Önlemleri
Güvenlik duvarının dışında, sisteminizi korumak için başka önlemler de alabilirsiniz:
-
Disk Şifreleme: Sisteminizi kurarken “Encrypt the new installation” seçeneğiyle diskinizi şifrelemek, verilerinize yetkisiz erişimi engeller. Dizüstü kullanıyorsanız bu, atabileceğiniz en yüksek getirili tek güvenlik adımıdır; cihazınız çalınsa bile verileriniz okunamaz. Modern donanımda performans etkisi ihmal edilebilir düzeydedir ve diskin ömrünü kısaltmaz.
-
GPG veya PGP ile Şifreleme: Hassas dosyalarınızı şifrelemek, verilerinizin güvenliğini artırır. Özellikle şifreli e-postalar veya dosyalar göndermek için bu yöntem çok yararlıdır. Tekil bir dosya için
gpg -c dosya.txtkomutu işinizi görecektir. -
Güçlü şifre ve otomatik ekran kilidi: Basit görünse de en çok atlanan adım budur.
-
Yalnızca resmi depolardan kurulum: İnternette gördüğünüz rastgele PPA’lar ve
curl ... | sudo bashşeklindeki kurulum script’leri, sisteme zararlı yazılım bulaştırmanın en yaygın yoludur. Ne yaptığını anlamadığınız hiçbir script’i çalıştırmayın.
Sistem Günlüklerini Okuma ve Analiz Etme
Sistem günlükleri, sistem hatalarını ve uyarılarını takip etmek, sorunları çözmek için kritik bilgiler sunar. Bir şey çalışmadığında cevap neredeyse her zaman buradadır. Bu günlükler, journalctl komutu ile erişilebilir. journalctl, journald hizmeti tarafından toplanan tüm logları gösterir. Genel komutlar:
journalctl -f # Kayıtları gerçek zamanlı olarak görüntüler.
journalctl -u <servis_ismi> # Belirli bir servisin loglarını gösterir.
journalctl -u <servis_ismi> -n 50 # Belirli bir servisin son 50 satırını gösterir.
journalctl -p err -b # Bu açılıştaki yalnızca hata seviyesindeki kayıtları gösterir.
journalctl -k # Sadece çekirdek günlüklerini görüntüler.
journalctl -b -1 # Bir önceki açılışın günlüklerini gösterir; ani kapanmaları incelemek için çok işe yarar.
journalctl --since "2024-01-01" --until "2024-01-10" # Belirli bir tarih aralığını görür.
man journalctl # journalctl komutunun detaylı man sayfasını açar.
Küçük bir tavsiye: karşınıza bir hata mesajı çıktığında onu olduğu gibi arama motoruna yapıştırın. Linux dünyasında sizden önce aynı hatayı alan ve çözümünü yazan biri neredeyse her zaman vardır. :)
Güvenlik duvarı, şifreleme, ve günlük analizi gibi temel güvenlik önlemleri, sisteminizin sağlığını korumak için önemlidir. UFW ile temel güvenlik duvarı yapılandırmasını yapabilir, journalctl ile sistem güncellemelerini ve hataları takip edebilirsiniz. Bu işlemler, güvenli ve verimli bir sistem kullanımı için önemli adımlardır.
10. Nereden Devam Etmeli?
Buraya kadar okuduysanız tebrik ederim, çünkü Linux dünyasına bir adım atmış bulundunuz. Artık Linux kullanmaya başlamak için gerekli temel bilgileri edindiniz. Yedekleme, güncelleme, disk temizliği, sistem güvenliği gibi önemli konularda adım adım neler yapmanız gerektiğini öğrendiniz.
Devam etmek isterseniz size birkaç kaynak bırakayım:
mansayfaları: en güncel ve en doğru kaynak, zaten sisteminizde kurulu geliyor.- Arch Wiki: Arch kullanmasanız bile Linux dünyasının en iyi dokümantasyonudur.
- Ubuntu Server Guide: sunucu tarafına geçmek isterseniz iyi bir başlangıç noktası.
- ss64.com/bash: hızlı bir komut referansı arıyorsanız buraya bakabilirsiniz.
- Bash betikleri: öğrendiğiniz komutları birleştirip işlerinizi otomatikleştirmek, atacağınız bir sonraki doğal adım olacaktır.
Son bir tavsiye daha vereyim: kırmaktan korkmayın. Bir sanal makine kurun ya da yedeğinizi alın, sonra sistemi bilinçli olarak bozun ve toparlamaya çalışın. Linux’u en hızlı bu şekilde öğrenirsiniz. Unutmayın, Linux çok güçlü ve esnek bir sistemdir, ancak öğrenme süreci biraz zaman alabilir. Sabırlı olun, hata yapmaktan korkmayın ve araştırarak öğrenmeye devam edin.
Bu yazımda Linux dünyasına adım atmanızı kolaylaştırmayı amaçladım. Umarım faydalı olmuştur ve okurken keyif almışsınızdır. Ayrıca bu ilk kapsamlı yazım olduğundan elbette bazı yazım yanlışlarım ve hatalarım olabilir; bu konuda yorumlarınız ve geri bildirimleriniz çok değerli olacaktır. Lütfen düşüncelerinizi paylaşmaktan çekinmeyin. Bir sonraki yazımda görüşmek üzere, sağlıcakla kalın!