Ocak 15, 2020
İzmir Fen Lisesi
@boratanrikulu
Bir çekirdek.
Linux Torvalds
tarafından 1991'de yazılmıştır.
(dipnot: "just for fun")
UNIX'den
esinlenerek, kapalı bir kaynak olan UNIX'e bir alternatif olması amacıyla yazılmıştır.
UNIX çatallanması (fork) değildir. Direkt alınmış hiç bir kod yoktur.
Çekirdek nedir?
İşletim sisteminin
bir bölümü.
İşletim sisteminin kalbidir diyebiliriz.
Fakat kalp tek başına bir vücud değildir, değil mi?
İşletim sistemleri
iki ana kısımdan oluşur.
Kernel (çekirdek) ve Shell (kabuk).
Kernel
uygulamalar ile donanım arasında çevirici görev görür. Çevirmendir.
Fiziksel donanımla yazılım arasındaki haberleşmeyi sağlar.
Shell
işletim sistemindeki uygulamaların, kernel ile haberleşmesinin arasında bulunan ara bir katmandır. Kernel'e kabuk üzerinden erişiriz.
İşletim sistemi.
O halde, hani nerede işletim sistemi?
GNU
Özgür yazılımı amaç edinmiş bu işletim sistemi, 1983 yılında
Richard Stallman
tarafından geliştirilmeye başlanmıştır.
Belli bir süre HURD çekirdeğini kullanan GNU;
1991'de Linux'un duyurulması ve Linux çekirdeğinin popülerlik kazanmasıyla, GNU işletim sisteminde, çekirdek olarak Linux'a geçiş yapılmıştır.
GNU (Hurd)
GNU/Linux
1991'den sonra.
Bu sebeplerden dolayı
yalnızca Linux demek yanlıştır.
GNU/Linux
olarak söylenmesi daha doğrudur.
GNU/Linux'un size sağlayacağı bir çok avantaj var.
GNU/Linux
özgür bir yazılımdır.
Peki özgürlük nedir?
Hayır, hayır.
Yazılımsal olarak değil.
Gerçekten özgürlük nedir?
Bir şeyin özgür olması için bu 4 şartın yerine getirilmesi gerekir.
Çalıştırılabilirlik: İlgili şeyin istendiği şekilde ve doğrultuda çalıştırılabilmesi.
Değiştirilebilirlik: İlgili şeyin şeyin istendiği amaç doğrultusunda değiştirilebilmesi. İstediğimiz şekilde ekleme çıkarma yapılabilmesi.
Dağıtılabilirlik: İlgili şeyin herhangi biri tarafından tekrardan dağıtılabilir, toplulukla bunu paylaşabilmesi.
Değiştirip dağıtılabilirlik: İlgili şeyi istenildiği gibi çalıştırılması, o şeyi istediğimiz doğrultuda değiştirip ve geliştirip bu haliyle yeniden dağıtabiliriz.
Bu şartları yerine getiren
her şey özgürdür.
İster kitap olsun,
ister donanım,
ister yazılım,
ister bir bira..
Özgür yazılım,
ücretsiz anlamına gelmez.
Özgürlük şartılarında ücretsiz olmalıdır diye bir şart yoktur.
To understand the concept, you should think of “free” as in “free speech,” not as in “free beer”.
Özgürlüğün getirisi,
çeşitlilik.
GNU/Linux isimli indirip kurabileceğiniz bir işletim sistemi aslında yoktur.
Bir çok distro vardır.
Distro, yani dağıtım, özgür yazılım felsefesinin çok alternatifli dünyasının bir sonucu olarak ortaya çıkmış, GNU/Linux'a özgü bir terimdir.
Binlerce dağıtım..
Ubuntu
Archlinux
Debian
Red Hat
Slackware
Arch <3
OpenSuse
Terminal, işletim sisteminizi shell ile kullanmanızı sağlayan bir arayüzdür.
Girdi ve çıktı şeklinde çalışır.
Windows'ta bunun karşılığı CMD denebilir.
Windows'ta şuana kadar hiç CMD'ye girmeden hayatta kalabiliyorsanız, GNU/Linux dağıtımlarının bir çoğunda da terminale hiç uğramadan da hayatta kalınabilir.
Shell işletim sistemlerinin servislerini kullanmak amacıyla kullanılan bir kullanıcı arabirimidir (user interface), bir programdır.
Kabuk (shell), çekirdek ile kullanıcı arasında ara görev görür.
Bir çok kabuk çeşidi vardır;
ctrl + l ile terminal temizlenir.
ctrl + d ile terminalden çıkış sağlanır.
ctrl + shift + c ve ctrl + shift + v ile kopyalama - yapıştırma yapılır.
UNIX tabanlı ya da esinlenilmiş işletim sistemlerinin dosya sistem hiyerarşisi Windows işletim sisteminden oldukça farklıdır.
GNU/Linux sistemlerde bir dosya dizin hiyerarşisi vardır.
Bu hiyerarşinin en üstünde
"/" yani root(kök) dizini bulunur.
Bu, tüm sistemin referans noktasıdır.
"/" ile "/root" birbirinden farklıdır.
Tüm dizinlerin üzerinde bulunan dizindir. Tüm dizinler buradan dallanarak oluşturulur.
Sisteminin temel komutlarının bulunduğu dizindir.
Kullandığımız çoğu komut bu dizin altında bulunur. (cat, mkdir, cp, ls, mv, rm)
Sistemin bütün yapılandırma dosyaları bu dizin altında bulunur. Yapılandırma dosyası; bir programın işleyişini kontrol etmek için kullanılan yerel bir dosyadır.
Kullanıcıların kayıtlı dosyalarını, kişisel ayarlarını vb. içeren ev dizinleridir. Windows'daki Documents and Settings'e benzetebiliriz. Her bir yeni kullanıcı için alt dizin olarak altına oluşturulur.
- /home |-----> f |-----> boratanrikulu
Root kullanıcısının home dizinidir. Diğer home dizinlerinden bi farkı yoktur.
Kernel modülleri ve paylaşılan kütüphane dosyaları bu klasörde bulunur. Var olan çekirdek modüllerini /lib/modules/[versiyon_numarası] içersinde bulabilirsiniz.
Sistem değişkenlerini saklar. Home dizini kullanıcıların dosyalarını depolarken, /var dizini içinde de programların oluşturduğu veriler tutulur.
GNU/Linux dosya dizin hiyerarşisine uymayan programların kurulduğu dizindir. "Bağımlılık" kavramına uymayan bu programlar sistemden yalıtılmış halde /opt dizini altından çalışmayı sürdür.
Bir dosyanın yeri tarif ederken
kullanıdığımız iki türlü yol kavramı vardır.
Bunlar tam yol ve göreceli yoldur.
"/var/log" dizi altında olduğumuzu düşünelim.
Yani pwd komutunun çıktısı
Bu dizinin içersinde de
"http" diye bir dizin var.
/var/log
Bu dizine girmek istersek,
tüm adresini yazmadan,
yapmamız yeterlidir.
Buna göreceli yol denir.
cd http
Fakat eğer /var/log altında değilsek
ve /var/log/http'e girmek istiyorsak,
Buna da tam yol denir.
cd /var/log/http
Paket yöneticisi ile tek bir komut ile istediğiniz uygulamayı kullandığınız dağıtımın repo'larından direkt olarak çekip kurabilmenize olanak sağlayan,
El ile derlemeden, kolacak sisteminize paketleri kurabileceğiz bir programdır.
Paket yöneticisi yalnızca bir programdır ama dağıtımdan dağıtıma farklılık gösterir.
Her paket yöneticisi her dağıtımda kullanamazsınız.
Paket yöneticisi yalnızca bir programdır ama dağıtımdan dağıtıma farklılık gösterir.
Her paket yöneticisi her dağıtımda kullanamazsınız.
Örneğin, archlinux tabanlı dağıtımlarda Pacman isimli paket yöneticisi kullanılır.
Pacman dışında, archlinux tabanlı olmayadan dağıtımlarda kullanılan,
bir çok paket yöneticisi vardır.
Paket yöneticilerinin kullanımları farklılık gösterebilir. Ancak temelde bütün paket yöneticileri aynı işi yaparlar.
Dağıtımın repolarında bulunan paketlerin sisteme indirilmesi, kurulması.
Örneğin archlinux tabanlı bir dağıtımda,
firefox'u kurmak istersek,
aşağıdaki gibi kurulumu yapabiliriz.
pacman -S firefox
sudo pacman -S firefox
| | | |_________ Parametre 2
| | |
| | |_____________ Parametre 1
| |
| |___________________ Paket yöneticisi
|
|_________________________ Yetki
Burada sudo ifadesini kullanma sebebimiz işlemin sistem dosyaları üzerinde
işlemler gerçekleşiyor olması.
Bu yüzden
komutun root yetkisi ile çalışması için komutun başına sudo ifadesini ekledik.
Bu paketler nereden geliyor?
Peki bu paketler nereden geliyor?
İşte burada "repo" kavramı ortaya çıkar.
Her dağıtımın kendisine ait bir repo'su vardır.
Paket yöneticisi ile indirilip kurulan uygulamalar bu repo'lardan gelir.
vim /etc/apt/source.list
GNU/Linux'da yürütülecek tüm komutların
bir yetki sınırı vardır.
Bu yetki sınırı, kullanıcı kavramı ile belirlenir.
Ortak yetki sahipliği bulunan kullanıcıları
Bir grup haline getirerek, işlem kolaylığı sağlanır.
Bu da grup kavramını açıklar.
"useradd" komutu ile yapılır.
Kullanıcıyı kendi istediğimiz şekilde eklemek amacıyla,
parametreler ile kullanıcıyı özelleştiririz.
Sisteme bir kullanıcı ekleyelim.
sudo useradd --create-home \
--shell /bin/zsh \
--groups users \
yenikullanici
Bu kullanıcıya bir parola verelim.
sudo passwd yenikullanici
Kullanıcıya root yetkili gruba ekleyelim.
sudo gpasswd --add yenikullanici wheel
Grupların root yetkisi sudoers dizininden belirlenir.
Sistemideki kullanıcılar "/etc/passwd" altında görülebilir.
Bu ifadeyi aşağıdaki gibi okuruz.
root:x:0:0::/root:/bin/bash
Sisteme bir grup ekleyelim.
sudo groupadd yenigrup
Oluşturduğumuz kullanıcıyı bu gruba ekleyelim.
sudo gpasswd --add yenikullanici yenigrup
Not : Burada --add parametresi oldukça kritiktir. Eğer kullanılmaz ise kullanıcıyı hali hazırda bulunduğu tüm gruplardan çıkarır
ve yeni gruba ekler.
Sistemideki gruplar "/etc/group" altında görülebilir.
Sistemdeki kullanıcıların parolaları "/etc/shadow"'da tutulur.
Buradaki veriler hash'lenmiştir.
GNU/Linux'ta her şey birer dosyadır.
Dizinler, dosyaların konumunu belirten
birer özel dosyadır.
Dizinler veri içeremez,
yalnızca konum belirtmek
amaçlı kullanılabilirler.
Dizinlerin bir türü yoktur, uzantısı yoktur.
Dosyaların ise bir türü vardır, uzantısı bulunabilir.
Dizin ve dosya isimleri aynı olamaz.
"ls" ile dosyalarının izin ve sahipliklerini inceleyebiliriz.
ls -l
Dosya ve dizin işlemlerine bakıldığında 10 karakterden oluşan bir yapı görünür.
Bu karakterler
izinlerini temsilen kullanılır.
Bunları aşağıdaki gibi üçerli olarak gruplandırarak incelemekte fayda vardır.
Yani bu örnektekinin;
iznine sahip olduğunu görüyoruz. Ayrıca bu dosyaların fsutil kullanıcısına ait olduğunu ve group'unun users olduğunu incelemiş olduk.
chown yeni_sahip:yeni_group dosya_adi
chmod kim=izin_yetkisi dosya_adi
İki türü var.
chmod o-rwx -R dizin/
Text | Class | Açıklama |
---|---|---|
u | Owner | Dosyaya sahip olan kullanıcı |
g | Group | Dosyanın ait olduğu grup |
o | Other | Diğer herkes |
a | All | Herkes (ugo ile aynı anlama gelir) |
Operator | Açıklama |
---|---|
+ | Yetkiyi ilgili kullanıcılara ekler |
- | Yetkiyi ilgili kullanıcılardan çıkarır |
= | Yetkiyi eşitler |
chmod 744 -R dizin/
İzin | Numara Karşılığı |
---|---|
r | 4 |
w | 2 |
x | 1 |
stat -c %a dosya_adi
chattr +i dosya_adi
chattr -i dosya_adi