Linux101

Linux'a biraz arka planda dönen hikayesi ile başlayalım, aslında her şey 1969 yıllarında Thompson ve Dennis Ritchie'nin UNIX işletim sistemini geliştirmesi ile başladı. On yılı geçgin bir süre de Richard Stallman, Hurd adı verilen GNU projesi üzerinde çalışmaya başladı, ne yazık ki projeyi tamamlayamadı. (Kernel, işletim sisteminin en önemli parçasıdır. Donanımın yazılım ile haberleşmesini sağlar.) Bu süre zarfında BSD, MINIX vb. gibi diğer çalışmalar UNIX benzeri sistemler olacak şekilde geliştirildi. Ancak tüm bu UNIX benzeri sistemlerin ortak noktası, birleşik bir kernel'in olmamasıydı. Daha sonra 1991 yılında Linus Torvalds adında genç bir adam, bugün Linux kernel olarak bildiğimiz yazılımı geliştirmeye başladı.

Linux Dağıtımları

Bir linux sistemi üç ana bölüme ayrılmıştır;

  • Donanım: Bu sisteminizin üzerinde çalıştığı tüm donanımın yanı sıra bellek, CPU, diskler vb. gibi dahili donanımları da içerir.

  • Linux Kernel: Kernel işletim sisteminin çekirdeğidir. Donanımı yönetir ve ona sistemle nasıl etkileşim kuracağını söyler.

  • Kullanıcı Alanı: Bu kısım bizim gibi kullanıcıların sistemle doğrudan iletişime geçeceği yerdir.

  • Bazı linux dağıtımları şunlardır; Debian Red Hat Enterprise Linux Ubuntu Fedora Linux Mint Gentoo Arch Linux openSUSE Manjaro Slackware CentOS Puppy

Komut Satırı

Shell

Shell, adeta işletim sisteminin eldiveni gibidir. Komutlarınızı alır ve onları sistemle iletişim kuracak şekilde işler. Bazı insanlar ona 'Terminal' derken, diğerleri 'Konsol' diyebilir. Ama sonuçta, işletim sisteminin arka planında dönen sihirli bir şeydir! Farklı kabuk türlerinin varlığından bahsedilebilir. Örneğin Ksh, zsh, ve tsch gibi. Bu farklı kabuklar, kullanıcıların tercihlerine ve ihtiyaçlarına göre farklı özellikler sunabilir. Belki de farkına varmışsınızdır. Komut isteminin başındaki $ işaretini. Farklı kabuklar, farklı komut istemi sembollerine sahip olabilir. Bizim satırımızda, $ sembolü, Bash, Bourne veya Korn kabuklarını kullanan tipik bir kullanıcı için geçerlidir. Komut yazarken bu sembolü eklemeniz gerekmez, ancak her zaman orada olduğunu görebilirsiniz.

pwd (Print Working Directory)

Linux, her şeyin bir dosya olduğu garip ve harika bir dünyadır. Ne demek istediğimi daha derine indikçe daha iyi anlayacaksınız, ancak şimdilik bu fikri aklınızda tutun. Her dosya, bir ağaç gibi düzenlenmiş hiyerarşik bir dizin içinde yer alır. Bu dizin ağacının en üstünde kök dizin bulunur ve buradan itibaren daha fazla klasör ve dosya keşfetmeye başlarsınız. Bir nevi, bilgisayarınızın saklambaç oyunu gibi düşünebilirsiniz. İşte size bu dizin ağacın nasıl göründüğüne dair bir örnek:

Bu dosya ve dizinlerin konumu yol olarak adlandırılır. Eğer home adında bir klasörünüz ve içinde user adında bir klasörünüz ve bu klasörün içinde bin adında başka bir klasörünüz varsa, bu yol şöyle görünür: /home/user/bin, oldukça basit değil mi?

Dosya sisteminde gezinmek, gerçek hayatta olduğu gibi nerede olduğunuzu ve nereye gittiğinizi bilmeniz açısından faydalıdır. Nerede olduğunuzu görmek için pwd komutunu kullanabilirsiniz. Bu komut "çalışma dizinini yazdır" anlamına gelir ve size sadece hangi dizinde olduğunuzu gösterir, yolun kök dizinden kaynaklandığına dikkat edin.

cd (Change Directory)

Şimdi, nerede olduğunuzu bildiğinize göre, dosya sisteminde biraz gezinmeye ne dersiniz? Yolları kullanarak yolumuzu bulmamız gerektiğini unutmayın. Dosya sisteminde gezinmek için iki farklı yol türü vardır: mutlak ve göreceli yollar. Hangi yolu seçerseniz seçin, dosya sisteminde kaybolma şansınız yok! Hadi yolculuğa başlayalım!

Resimde görüldüğü gibi dizin konumumuzu "/home/kali" den "/home/kali/dosya" olarak değiştirdik.

cd komutunun farklı kullanımları da var elbette; cd . Bu, şu anda içinde bulunduğunuz dizindir. cd .. Sizi bulunduğunuz dizinin üstündeki dizine götürür. cd ~ Bu dizin varsayılan olarak "ev dizininiz"dir. Örneğin /home/kali.

ls (List Directories)

Şimdi, sistemde nasıl hareket edeceğimizi bildiğimize göre, önümüzde ne olduğunu anlamak için ne yapacağımızı düşünelim. Şu anda, adeta karanlık bir odada ilerliyor gibiyiz. Dizin içeriğini görmek için kullanacağımız harika bir araç var: ls komutu. Bu komut, varsayılan olarak bulunduğumuz dizindeki dizinleri ve dosyaları listeleyecektir. Ancak, belirli bir yolu listelemek isterseniz, bu da mümkün.

Ancak bazı dosyalar gizlidir ve ls komutu ile gözükmeyebilir bunun için ls -a komutunu kullanabilirsiniz. Dosyaların ayrıntılarını göstermek içinse ls -l ve bu iki komutu beraber kullanabilirsiniz ls -la.

touch

touch komutu yeni boş dosyalar oluşturmanıza olanak tanır. touch newfile komutunu terminale yapıştırdığınızda newfile adında bir boş dosya oluşturulduğunu görebilirsiniz.

file

Bir dosyanın ne tür bir dosya olduğunu öğrenmek için file komutunu kullanabilirsiniz. Bu size dosyanın içeriğinin bir açıklamasını gösterecektir.

cat

cat komutu concatenate'in kısaltmasıdır ve dosya okuma gibi işlemlerde kullanılır. Büyük dosyaları görüntülemek için harika değildir ve yalnızca kısa içerikler içindir.

less

less bir dosya okuma komutudur. cat komutundan farkı daha büyük dosyaları okumanıza yardımcı olur. Metin, sayfalı bir şekilde görüntülenir. Böylece bir metin dosyasında sayfa sayfa gezinebilirsiniz.

history

history komutu adından da anlaşılacağı gibi shell üzerinde yazdığınız geçmiş komutları gösterir. Daha önce yaptığınız aynı komutu çalıştırmak istiyorsanız, yukarı oka basmanız yeterlidir. Tabii ki de bu geçmişi temizleyebiliriz. Temizlemek için komut satırına clear yazmamız yeterli olacaktır.

cp (Copy)

cp komutu dosya için kullanılır. Kopyalama işlemi için cp komutundan sonra kaynak dizin/dosya ve hedef dizin/dosya belirtilir.

mv (Move)

mv komutu bir dosyayı bulunduğu dizinden başka bir dizine taşımak için kullanılır. Taşıma işlemi ile birlikte dosya ismi de değiştirilebilmektedir.

mkdir (Make Directory)

Üzerinde çalıştığımız tüm dosyaları düzenli bir şekilde saklamak için bazı dizinlere ihtiyacımız olacak. Bu amaçla mkdir (Dizin Oluştur) komutu oldukça kullanışlıdır. Eğer zaten mevcut değilse belirttiğiniz dizini oluşturur. Ayrıca aynı anda birden fazla dizin de oluşturabilirsiniz.

rm (Remove)

rm komutu fazlalıklardan kurtulmamıza yardımcı olabilir. Bu komutu kullanarak istediğimiz dosyaları silebiliriz.

find

find komutu ile sistemde istediğimiz dosyayı kolayca bulabiliriz. Örneğin, find /home -name flag.txt bu komut flag.txt dosyasını /home dizini altında bizim yerimize arar.

help

Anlattığımız birçok komut ve anlatmadıklarımızın hepsini görüntüleyebilmek için terminale help yazmamız yeterli olacaktır.

Kullanıcı Yönetimi

Kullanıcılar ve Gruplar

Her işletim sisteminde olduğu gibi Linux tabanlı bir işletim sisteminde de kullanıcılar ve gruplar vardır. Bu kullanıcıların farklı izinleri ve yetkileri olabilir. Her kullanıcının, kullanıcıya özel dosyaların depolandığı kendi giriş dizini vardır. Bu genellikle "/home/kullanıcı" dizininde bulunur. Tabii farklı linux dağıtımlarında farklılık gösterebilir. Sistem, kullanıcıları yönetmek için kullanıcı kimliklerini (UID) kullanır. Kullanıcı adları, kullanıcıları kimlikle ilişkilendirmenin kolay yoludur. Ancak sistem, kullanıcıları UID'lerine göre tanımlar. Sistem ayrıca izinleri yönetmek için grupları kullanır. Gruplar yalnızca izinleri o grup tarafından belirlenen kullanıcı gruplarıdır ve sistem tarafından grup kimlikleriyle (GID) tanımlanırlar. Arka planda, bu sistem bir ağır metal konserine gizlice girmek isteyen bir grup hacker'ın hikayesini hatırlatıyor. Kimlik hırsızlığı, grup kimliğinin (GID) çalınması ve izinsiz erişim sağlanması gibi karanlık bir hikaye var gibi. Tabii ki gerçek hayatta böyle şeyler olmaz... ya da olur mu? Linux'ta sistemi kullanan normal insanlara ek olarak kullanıcılarınız da olacaktır. Bazen bu kullanıcılar, sistemin işleyişini sürdürmek için sürekli olarak süreçleri çalıştıran sistem arka plan programlarıdır. En önemli kullanıcılardan biri root veya süper kullanıcıdır. root sistemdeki en güçlü kullanıcıdır. root herhangi bir dosyaya erişebilir ve herhangi bir işlemi başlatıp sonlandırabilir. Bu nedenle sürekli root olarak çalışmak tehlikeli olabilir. Sistem açısından kritik dosyaları kaldırma ihtimaliniz vardır. Neyse ki, root erişimi gerekiyorsa ve kullanıcının root erişimi varsa sudo komutu yerine root olarak bir komutu çalıştırabilirler. Sudo komutu (superuser do), root erişimi olan bir komutu çalıştırmak için kullanılır.

shadow dosyasını görüntülemek istediğimizde "Permission denied" hatası ile karşılaşacaksınız. Bu hata, dosyayı okuma iznininzin olmadığı söylemektedir. ls -la /etc/shadow komutu ile dosyanın izinlerine bakabiliriz. Göreceksiniz ki dosyayı okumak için root yetkilerine sahip olmalıyız. Bunun için sudo cat /etc/shadow komutu ile kolayca çözebiliriz.

root

sudo komutunu kullanarak root kullanıcısının yetkilerini elde etmeyi inceledik. su komutuyla komutları root kullanıcısı olarak da çalıştırabilirsiniz. Bu komut "kullanıcıların yerini alacak" ve kullanıcı adı belirtilmemişse bir terminal açacaktır. Şifreyi bildiğiniz sürece herhangi bir kullanıcının yerini almak için bu komutu kullanabilirsiniz. Peki sistem Mikail kullanıcısının root kullanıcısı gibi komut çalıştırmasına izin vermiyor. Peki bunu nasıl yapıyor? /etc/sudoers dosyası adında bir dosya var. Bu dosya sudo'yu çalıştırabilen kullanıcıları listeliyor. Bu dosyayı visudo komutuyla düzenleyebilirsiniz.

Kullanıcı Yönetimi Araçları

Çoğu kurumsal ortamlar; kullanıcıları, hesapları ve parolaları yönetmek için yönetim sistemlerini kullanıyor. Tek makinede bunu yapmak için birkaç komut yeterli olacaktır.

Kullanıcı Ekleme

Adduser veya useradd komutunu kullanabilirsiniz. Adduser komutu, bir giriş dizini oluşturma ve daha fazlası gibi daha yararlı özellikler içerir. Varsayılan kullanıcıya atamak istediğiniz şeye bağlı olarak özelleştirilebilen, yeni kullanıcılar eklemek için yapılandırma dosyaları vardır.

sudo useradd yavuzlar komutu yavuzlar için /etc/passwd dosyasında bir giriş oluşturduğunu, varsayılan grupları ayarladığını ve /etc/shadow dosyasına eklediğini göreceksiniz.

Kullanıcı Silme

Bir kullanıcıyı kaldırmak için userdel komutunu kullanabiliriz. sudo userdel yavuzlar bu komut kısaca useradd komutunun passwd ve shadow dosyalarında yaptığı değişiklikleri geri alır.

Kullanıcı Şifre Değiştirme

passwd yavuzlar komutu yavuazlar kullanıcısnın şifresini değiştirmesine olanak tanıyacaktır.

Paketler

Paketler nedir? Bunları Chrome, Photoshop vb. olarak biliyor olabilirsiniz ve öyledirler. Ancak gerçekte bunlar yalnızca tek bir dosyada derlenmiş çok sayıda dosyadır. Bu yazılımı yazan kişiler (veya bazen tek bir kişi), upstream sağlayıcıları olarak bilinir. Lodlarını derlerler ve nasıl kurulacağını yazarlar. Bu upstream sağlayıcıları yeni yazılım çıkarmaya ve mevcut yazılımı güncellemeye çalışır. Bunu dünyaya yayınlamaya hazır olduklarında, paketlerini bu yazılımın kullanıcıların eline geçmesiyle ilgilenen paket bakımcılarına gönderirler. Bu paket bakımcıları bu yazılımı paketler halinde inceler, yönetir ve dağıtır.

gzip

Muhtemelen bir dosya arşivinin ne olduğunu zaten biliyorsunuzdur. Büyük olasılıkla .rar ve .zip gibi dosya türleriyle karşılaşmışsınızdır. Bunlar bir dosya arşividir. İçlerinde birçok dosya içerirler.

Dosyaları gzip ile sıkıştırmak

gzip, Linux'ta dosyaları sıkıştırmak için kullanılan bir programdır ve .gz uzantısıyla biter. Bir dosyayı sıkıştırmak için: gzip dosya Sıkıştırılan dosyayı açmak için: gunzip dosya.gz komutu kullanılır.

rpm and dpkg

Tıpkı .exe'nin tek bir yürütülebilir dosya olması gibi .deb ve .rpm de öyle. Paket depolarını kullanırsanız normalde bunları göremezsiniz. Ancak paketleri doğrudan indirirseniz büyük olasılıkla bunları bu popüler formatta alırsınız. Açıkçası bunlar kendi dağıtımlarına özeldir. Debian tabanlı için .deb ve Red Hat tabanlı için .rpm.

Bu doğrudan paketleri kurmak için paket yönetimi komutlarını kullanabilirsiniz: rpm ve dpkg. Bu araçlar paket dosyalarını yüklemek için kullanılır. Ancak paket bağımlılıklarını yüklemezler. Dolayısıyla paketinizde 10 bağımlılık varsa bu paketleri ayrı ayrı, ardından bağımlılıklarını vb. yüklemeniz gerekir.

Paket Yükeleme

Debian: dpkg -i some_deb_package.deb RPM: rpm -i some_rpm_package.rpm i, install anlamına gelir. Daha uzun olan --install biçimini de kullanabilirsiniz.

Paket Silme

Debian: dpkg -r some_deb_package.deb RPM: rpm -e some_rpm_package.rpm -r remove u temsil ederken -e erase yi temsil etmektedir

yum and apt

Bu sistemler, paket bağımlılıklarının kurulması da dahil olmak üzere paket kurulumunu, kaldırılmasını ve değişikliklerini kolaylaştırmak için tüm düzeltmelerle birlikte gelir. En popüler yönetim sistemlerinden ikisi yum ve apt'dir. Yum, Red Hat ailesine özeldir ve apt ise yalnızca Debian ailesine özeldir.

Paket Yükeleme

Debian: apt install package_name RPM: yum install package_name

Paket Silme

Debian: apt remove package_name RPM: yum erase package_name

Tüm Paketleri Günelleme

Tüm paketleri tek komut ile güncelleyebilirsiniz. Debian: apt update; apt upgrade RPM: yum update

Last updated