Linux Sistem Yönetimi hakkında temel bilgileri içerir.
1. Linux Dağıtımları
2. KomutSatırı
3. Text İşlemleri
4. KullanıcıYönetimi
5. İşlemler
6. İzinler
7. Dosyaİşlemleri
2. BEN KİMİM?
Mehmet Gürol ÇAY
MetaRoc siber güvenlik ekibi üyesi
GTÜ Bilgisayar Mühendisliği öğrencisi
mgurolcay.wordpress.com
gurolcay123@gmail.com
3. Neler Göreceğiz?
1. Linux Dağıtımları
2. Komut Satırı
3. Text İşlemleri
4. Kullanıcı Yönetimi
5. İşlemler
6. İzinler
7. Dosya İşlemleri
8. Biraz Kripto
4. UFAK BİR GİRİŞ
Ken Thompson ve Dennis Ritchie, 1969 yılında Bell Laboratuvar’ında UNIX işletim
sistemini geliştirdi. Daha sonra C programlama dilini geliştirdiler.
Daha sonralarında Richard Stallman GNU( GNU is Not UNIX) projesi üzerinde çalışmaya
başladı. GNU çekirdeğinin adı Hurd.
Bu sırada UNIX benzeri işletim sistemi olan MINIX’de geliştirildi.
1991’de ise Linus Torvalds bugünkü Linux çekirdeğini geliştirmeye başladı.
Soldan sağa: Ken Thompson , Dennis Ritchie Linus Torvalds
7. Belli başlı GNU/Linux Dağıtımları
▸Debian: 20 yılı aşkın süredir geliştirilen bir sistemdir.
Kendi paket sistemini kullanır. Mükemmel stabil çalışan bir
sistemdir.
▸Red Hat Enterprise Linux: RHEL olarak anılır. Debian’dan
farklı paket sistemini kullanır: RPM. Sunucu olarak kullanılır.
▸Ubuntu: Debian tabanlı bir sistemdir. Debian paket yönetim
sistemini kullanır. Başlangıç için iyi bir tercihtir.
▸Fedora: Red Hat’ın bir kolu diyebiliriz. Red Hat paket
yönetim sistemini kullanır.
▸Arch Linux: Tamamen topluluklar tarafından geliştirilir.
Debian’a benzer ancak güncellemeleri hemen alır. Yani test ve
stabil olmayan sürümleri yoktur. Kendi paket yöneticisini
kullanır.
10. Shell Nedir?
▸ Shell (Kabuk) kısaca özetleyecek
olursak klavyeden komutları alıp
işletim sistemine gönderen bir
programdır.
▸ “Terminal” veya “Console” adındaki
programlar ile Shell’I çalıştırmak
mümkün.
11. ▸Her shell kendi simgesi vardır. Biz bash
kullandığımız için simgesi “$” işaretidir.
▸ username@hostname:current_dir $
12. Diğer Shell Türleri
▸Bash( eskiden
sh) Kabuğu:
▹Bash, ilk Unix
sistemlerde sh,ksh
ve bazı csh
özellikleri için
geliştirilmiştir. Çoğu
Linux sistemlerinde
varsayılandır.
▸Tcsh (eskiden
csh) Kabuğu:
▹C kabuğunun(csh)
açık kaynak
versiyonudur. Çoğu
Berkeley Unix
sistemlerinde
varsayılandır.
▸Ksh Kabuğu:
▹Sh kabuğunun
atasıdır.
▸Zsh Kabuğu:
▹Sh kabuğunun
klonlarından
birisidir. POSIX
uyumludur. Yazım
denetimi ve komut
düzenlemeye farklı
yaklaşımları gibi
özellikleri vardır. İlk
Mac OS X
sistemerinde
varsayılandı. Şu an
Bash.
13. Bir Kaç Shell Komutu Öğrenelim
▸Linux’da herşey bir dosyadır. Bu dosyalar bir hiyerarşiye sahiptir.
▸İlk dizin “root” olarak isimlendirdiğimiz dizindir ve “/” simgesi ile
gösterilir.
▸ $ whoami
▸ $ date
▸ $ echo “hello world”
14. ▸ Bu komut çalıştığınız dizinin tam adresini verir
▸ Dosya oluşturmanızı sağlar. Bu komut ile dosyanın oluşturulma
tarihi ve değiştirilme tarihi değiştirilebilir.
▸ $ pwd
▸ $ cd
▸ Bulunduğunuz dizin yolunu değiştirmenizi sağlar
▸ $ touch
15. ▸ Dosya oluşturmanızı sağlar. Bu komut ile dosyanın
oluşturulma tarihi ve değiştirilme tarihi değiştirilebilir.
▸ $ touch
▸ $ file
▸ Linux’ta dosyaların tipini öğrenmek için kullanılır.
16. ▸ Bulunduğunuz dizin altındaki dizinleri dosyaları
listeler
▸ “-la” komutu, “-l” listeleme, “-a” gizli dosyaları
gösterme
▸ $ ls -la
17. ▸İlk sütun dosya/dizin
durumu:
▹“d” olursa bir dizin
▹“c” olursa character device
▹“b” block device
▹“l” bir dosyayı işaret eden link
▸ Dosya izinlerinde ilk üçlü
grup root yetkilerini, sonraki
üçlü grup kullanıcı yetkilerini,
son üçlü grupta diğer
kullanıcıların yetkilerini
gösterir
Dosya/dizin
izinleri
Link
sayısı
Dosya
sahibi
Dosya
grubu
Dosya
boyutu
Dosya değiştirilme
tarihi
Dosya isimleri
18. ▸ Dosya içeriğini gösterir. İki farklı dosya ismi cat komutuna
verilirse dosyaların birleşimi gösterilir.
▸Linux işletim sistemlerinde dosya tipinin ne olduğunu söyleyen
bir uzantıya ihtiyaç yoktur.
▸Terminalde bir önceki komuta erişmek için yukarı aşağı yön tuşları
kullanılabilir.
▸ $ cat myfile newfile
▸ $ cat myfile > newfile
▸ myfile içeriği newfile dosyasına yapıştırılır.
▸ $ cat myfile >> newfile
▸ myfile içeriği newfile dosyasına eklenir.
19. ▸ $ less /home/blabla/text1
▸ Bu komut ile çok uzun dosyaların içeriğini terminal ekranına
sığacak kadar gösterir.
▹q: çıkış g: dosya başı G: dosya sonu /search: arama h: yardım
21. Dosya İşlemleri
▸ $ cp mycoolfile /home/usrname/Documents/
▸Komutu ile “mycoolfile” dosyasını
“home/usrname/Documents/” alanı kopyalamış
oluruz.
▸ “-r” komutu verirsek kopyalama bir dizin için
yapılıyor ise özyinemeli olarak uygulanır
▸ “-i” komutu ile aynı dosya isminin üstüne
yazılması sağlanır
22. ▸ $ mv mycoolfile /home/usrname/Documents/
▸Komutu ile “mycoolfile” dosyasını
“home/usrname/Documents/” alanı taşımış oluruz.
▸ “-r” komutu verirsek kopyalama bir dizin için
yapılıyor ise özyinemeli olarak uygulanır
▸ “-i” komutu ile aynı dosya isminin üstüne
yazılması sağlanır
23. ▸ $ mkdir books
▸ Dosyalarımızı koyabileceğimiz bir dizin
oluşturmak için kullanılır.
▸ “-p” komutu ile alt dizinleride oluşturmak
mümkündür.
▸ $ mkdir books/cemalsureya/
24. ▸ $ rm file1
▸ komutu ile file1 dosyasını silebiliriz.
▹“-f” komutu ile silmeye zorlayabilir
▹“-r” komutu ile bir dizini özyinemeli olarak silebiliriz.
▸ $ rmdir books
25. ▸ $ find /home –name blabla.jpg
▸ bir dosyayı aramak istediğinizde
kullanabileceğiniz bir komut. Bulunan dosyanın
arattığınız yolla(path) birlikte verir.
▸“-type d” komutu ile bir dizin arayabilirsiniz.
▸ $ man ls
▸ bir komutun ne olduğunu nasıl çalıştığını anlatan
komuttur. Örneğimizde ls komutumuzun nasıl
çalıştığını verecektir.
26. ▸ $ whatis ls
▸ sonrasında verilen komutun kısaca
tanımlamasını verir
▸ $ alias foobar=‘ls –la’
▸Bazen çok uzun komutları tekrar tekrar
kullanmak zorunda kalırız. Bunu çözebilmek için
alias komutu kullanılır. Yukarıdaki örneğimizde “ls –
la” komutu yerine foobar komutu çağrılması
yeterlidir.
27. ▸ $ ~/.bashrc
▸ Peki bilgisayarımızı yeniden başlatmak zorunda
kaldık. Bu komutu verdiğimizde yeniden
başlatmadan sonrada “foobar” komutu geçerli
olacaktır.
▸ $ unalias foobar
▸ Yaptığımız atamayı kaldırmak için
▸ $ exit
29. Neler Göreceğiz?
▸Bu bölümde komut satırından basit bir
şekilde nasıl dosyaların içeriğini değiştiririz,
nasıl görüntüleriz, bir komutun çıktısını
başka bir çıktıya nasıl veririz gibi sorulara
yanıt bulacağız.
30. Stout-Stdin-Stderr
▸Stdin: standard input dosyasıdır ve varsayılan
olarak okuma amacıyla klavyeye yönlendirilmiştir.
▸Stdout: standard output dosyasıdır ve varsayılan
olarak yazma amaçlı ekrana yönlendirilmiştir.
▸Stderr: programlarda oluşacak hata mesajlarının
ekrana yazılması için kullanılan standard error
dosyasıdır. Stdout’tan farkı buffer kullanılmadan
hatanın doğrudan ekrana gönderilmesidir.
31. stdout
▸Dersimizin ilk kısmında bu komutu kullanmıştık.
Hatırladığınız gibi ekrana herhangi bir şey
yazdırmak istediğimizde “echo” komutu bize
yardımcı oluyordu.
▸Burada “echo” komutu klavyeden bir input alıyor
ve bunu I/O stream’e vererek çıktıyı döndürüyor.
▸ $ echo Hello World > peanuts.txt
32. stdout
▸Bu bir redirection operatörüdür ve standart
output’a giden verinin yönünü değiştirir. Böylece
echo komutunun almış olduğu input, I/O stream’a
yönlendirilmek yerine dosyaya yazılır. Bu redirect
komutu dosyada bir şey varsa üstüne yazılmasına
neden olur.
▸>
33. stdout
▸ Redirection komutunu iki kere verirsek örnekte
görüldüğü gibi, dosyanın sonuna ekleme yaparak
dosya içeriğinin güncellenmesini sağlar.
▸ $ echo Hello World >> peanuts.txt
35. stdin
▸ cat komutu bize dosya içeriğini veriyordu. Burada
peanuts.txt dosyasının içeriğini banana.txt dosyasına
stdin redirection komutu ile yönlendirmektedir.
▸ $ cat < myfile.txt > banana.txt
36. stderr
▸ Yukarıdaki komutu girdiğimizde /deneme/dizin
yolu olmadığı için ls komutu bir hata
döndürecektir. Bu kısımda hatanın peanuts
dosyasına yazılmasını bekleyebilirsiniz. Ancak
böyle bir şey söz konusu değildir.
▸Linux üzerinde file descriptors vardır. Bunlar stdin,
stdout ve stderr’yi tanımlamak için kullanılmaktadır
ve sırasıylar 0,1 ve 2 değerlerini alırlar.
▸ $ ls /deneme/dizin > peanuts
37. stderr
▸ 0 stdin, 1 stdout, 2 stderr
▸Eğer komutumuz yukarıdaki gibi olsaydı ls
komutunun döndürdüğü hata dosyaya
kaydedilecekti.
▸ $ ls /deneme/dizin 2> peanuts
▸ $ ls /deneme/dizin > peanuts 2>&1
▸Komutu ile stderr’nin stdout’a işaret etmesini
sağlamış olduk. Böylece hatamız hem dosyada hem
de ekranda görülebilecek
38. pipe and tee
▸ pipe bir komutun çıktısının başka bir komuta
verilmesini sağlar. Yukarıda vermis olduğumuz
örnekte ls –la /etc klasörünün çıktısı çok uzun
olacaktır. Bu komutun çıktısını less komutuna “|”
ile vererek okumayı kolaylaştırmıştır.
▸ $ ls –la /etc | less
▸ $ ls | tee banana
▸ iki farklı stream de çıktımı görmek istediğimde
bu komutu kullanabilirim.
39. env (Environment)
▸Yukarıdaki komut size ev klasörünün yolunu
verecektir. Bu bilgiler Linux içerisinde zaten
oluşturulmuş kaynaktan gelmektedir.
▸ $ echo $HOME
▸$ env
▸Bu komut ile tüm environment’ları görmek
mümkündür.
41. cut
▸ sample.txt içerisindeki yazının beşinci karakterini
kesmektedir. Ancak orjinal yazı bozulmaz sadece
istenilen yer bize gösterilir.
▸ $ cut –c 5 sample.txt
▸$ cut –f 1 –d “;” sample.txt
▸“-f” ekiyle hangi field’ta çalışacağını belirler.
▸ “-t” ekiyle de ayırıcının ne olduğunu belirtebilirz
böylece ayıracımıza kadarki cümle veya kelimeleri
terminal ekranında gösterir.
42. paste
▸Bu komut, cat ile benzerlik göstermektedir.
Örneğin; satır satır olan dosya içeriğinin tek bir
satırda gösterilmesini sağlar. Ayrıca bu boşlukların
ne şekilde gösterilebileceğini düzenleyebiliriz.
▸ $ paste –s sample.txt
▸$ paste –d ‘ ’ –s sample.txt
43. tail
▸head komutu ile benzer çalışmaktadır. Farkı ise
tail son 10 satırı göstermektedir.
▸ $ tail /var/log/syslog
▸$ tail –n 15 /var/log/syslog
▸Son 15 satırını göstermesini sağlar.
▸$ tail –f /var/log/syslog
▸Syslog dosyası devamlı değişen bir dosyadır. Bu
dosyayı devamlı izlemek istiyorsak “-f” komutu
kullanabiliriz.
44. Tr (Translate)
▸Bu komut bize küçük harflerin büyük harflere
çevrilmesini sağlar.
▸ $ tr a-z A-Z
45. uniq (Unique)
▸sample.txt dosyasında bir kelimeden kaç adet
olduğunu yanına yazarak gösterir.
▸ $ uniq sample.txt
▸ $ uniq –c sample.txt
▸sample.txt dosyası içerisinde birden fazla aynı
geçen kelimeleri birer defa gösterecek şekilde
düzenler.
▸ $ uniq –u sample.txt
46. uniq (Unique)
▸sample.txt dosyasında iki kere geçen kelimeleri
bulur
▸ $ uniq –d sample.txt
▸sample.txt dosyasında bir defa kullanılmış
kelimeyi bulur
▸ $ uniq –u sample.txt
48. grep
▸ $ env | grep –i User
▸Text işlemede, arama yapmada en çok kullanılan
komuttur. Genellikle başka bir komutun çıktısı pipe
ile bu komuta aktarılarak sonuç içerisinde arama
yapılır.
▸ $ grep fox sample.txt
▸ $ ls /somedir | grep ‘.txt$’
49. ^ Satırı başını belirtir. ^silgi
Satır başlarında “silgi” geçen bütün
satırları getirir.
$ Satır sonlarını belirtir. Kalem$
Satır sonları “kalem” ile biten satırları
getirir.
.
Herhangi bir karakter ile
eşleşir.
If…e
“if” ile başlayan sonrasında herhangi
iki karakter gelen ve sonu “e” ile biten
ifadeleri getirir.
*
Kendinden önceki
karakterden o veya daha
fazlasını belirtir
Kalem* “kalem” ile başlayan herşey ile eşleşir.
[ ]
Köşeli parantez içindeli
karakterlerden sadece
biriyle eşleşir
[a-z]*
Küçük alfabetik karakterlerle eşleşir
veya hiçbir şeyle eşleşmez
[Kk]alem
Kalem veya kalem içeren satırları
getirir.
Meta
karakter
Kapsam Örnek Sonuç
52. Kullanıcılar ve Gruplar
▸Her işletim sisteminde kullanıcı ve gruplar vardır.
Her kullanıcının yalnızca kendi erişimi ve yetkileri
vardır. Bir işlem çalışırken ona sahip olan
kullanıcının yetkileriyle çalışır. Dosya erişimi,
sahipliği ve yetkiler birbirleriyle bağlantılıdır.
▸Her kullanıcının kendi ev dizini ve kendi özel
dosyalarını tuttuğu bir alan vardır. Bu dosyalar
genellikle /home/username/ altında tutulur.
53. ▸İşletim sistemi kullanıcıları yönetilmek için
onlara farklı UID (user ID)’ler verir. İşletim sistemi
grupları da yönetebilmek için de GID (groups ID)’ler
tanımlar.
▸Linux’da iki tane çok önemli kullanıcı vardır: root
ve superuser .
▸root: Bu kullanıcı sistemde her türlü yetkiye
sahiptir ve her türlü dosyaya erişebilir. Her türlü
işlemi(process) başlatıp bitirebilir.
▸superuser: root olarak işlem yapmak çok tehlikeli
olabileceği için sudo komutu ile superuser erişimi
elde edilebilir.
54. ▸superuser ile root yetkisi kazanırız.
▸Aşağıdaki komutu deneyelim:
▸$ cat /etc/shadow
▸$ su
▸sudo komutu gibidir. Eğer herhangi bir kullanıcı
adı belirlenmemişse bu komut bize root yetkileri
olan bir shell verecektir.
55. ▸Bize root yetkileri kazandırdığı için bu komutu
kullanmak tehlikelidir. Bu yüzden sudo komutu
kullanmak daha yerinde olacaktır.
▸Peki sistem bizim bir komutu superuser olarak
çalıştırdığımızı nerden anlıyor?
▸ /etc/sudoers
▸Bu dosyayı visudo komutu ile değiştirmek
mümkün.
56. /etc/passwd
▸Bu dosya içerisinde hangi kullanıcı hangi UID ile
eşleştirilmiş görülebilir.
▸Dosya içeriği yukarıdaki görseldeki gibidir. Her bir
satır bir kullanıcıyı temsil etmektedir.
▸Sırasıyla inceleyecek olursak:
▹Kullanıcı adı
▹Parola (parola gerçekten bu dosya içerisinde
tutulmamaktadır. )
57. ▸Kullanıcı ID(User ID)
▸Grup ID
▸Kullanıcı hakkında yorum: genellikle gerçek ismi
veya telefon numarası gibi.
▸Kullanıcı ev klasör yolu
▸Kullanıcının kulladığı shell: genellikle bash’dir.
58. /etc/passwd
▸Kullanıcı yetkilendirmeleri hakkında bilgiler
saklar.
▸Erişim için superuser olunması gereklidir.
▸Kullanıcı adı
▸Şifrelenmiş parola
▸Parolanın değiştirildiği tarih: 1 Ocak 1970’ten
itibaren gün olarak ifade edilir.
▸Parolanın en az değiştirilme süresi
▸Parolanın süresi.
▸Parola süresi dolduktan sonar geçerli olduğu süre
▸Gelecek kullanıcı yenilikleri ayrılmış alan
60. /etc/shadow
1. Kullanıcı adı: kullanıcıların giriş yaparken kullandıkları isim. dizin yolundaki isimle aynı
olma ihtimali yüksektir.
2. Şifre: passwd de şifreler gözükmez. Onun yerine x yazar. Asıl şifreler /etc/shadow da
kriptolanmış olarak bulunur. Eğer bu bölüm boş bırakılmışsa şifresiz olarak giriş
yapılınabilir. Eğer * varsa kullanıcı disable olmuştur.
3. User id: kullanıcı id . 0 ' ı root kullanır. Genel olarak 100 e kadar olanlar sistemin kendi
sanal kullanıcılarına aittir. Mesela daemon,mail,wealizer vs vs... Bunlar normal
kullanıcılar değildir. Normal kullanıcılar genellikle 100 den büyük numaraları alırlar. Bu
numaralandırma 65000 e kadar gider
4. Grup id: /etc/group buradan gruplara ulaşabiliyoruz. Grup id hangi kullanıcının hangi
gruba ait olduğunu bize bildirir. Genelde user id ile aynı olur
5. User id info: kullanıcı hakkında daha detaylı bilgileri bulabileceğimiz bölüm. Mesela
kullanıcının telefon numarası ,tam ismi vs yazabilmektedir.
6. Dizin yolu: burası kullanıcının giriş yaptığı zaman bulunacağı bölüm. Burada
kullanıcıya ait programlar , dosyalar vs bulunur.
7. Shell: Shell kullanıcının girdiği komutları işlemeyi ve sonuçlarını göstemeyi sağlayan
programdır.Burada genelde /bash ya da /bin/bash yazar. Eğer /bin/false gibi bişey
yazıyorsa kullanıcı girişi engellenmiş demektir
61. ▸Bugünkü dağıtımlar sadece bu shadow
dosyasına bakarak kullanıcı yetkilendirme
yapmamaktadır.
▸PAM (Pluggable Authentication Modules)
gibi mekanizmalar kullanılabilmektedir.
/etc/shadow
62. Kullanıcı Yönetim Araçları
▸Kullanıcı eklemek için:
▸ $ sudo useradd bob
▸Kullanıcı kaldırmak için:
▸ $ sudo userdel bob
▸Kullanıcı şifresi değiştirmek için:
▸ $ passwd bob
64. Dosya İzinleri
▸Daha önce ls komutunu gördüğümüzde kısaca
bahsetmiştik.
▸Üç parttan oluştuğunu hatırlayalım. d harfi bize
dosya tipinin ne olduğunu söylüyordu. Burda sıklıkla –
ve d harflerini göreceksiniz. – işareti dosyanın genel
dosya tipi olduğunu ifade eder.
65. ▸İlk grubun root izinleri, ikinci grubun kullanıcı
izinlerini ve son grubun da diğer izinlerini ifade
ettiğini hatırlayalım.
▸Her bir karakterin bir anlamı vardır:
▸d | rwx | r-x | r-x
▸r : okunabilir (readable)
▸w : yazılabilir (writable)
▸x : çalıştırılabilir (executable)
▸- : o iznin olmadığını simgeler.
66. İzinleri Değiştirme
▸Dosyalarımızın izinlerini root, kullanıcı veya
diğerleri için değiştirebilmemiz mümkün. Bunun
için:
▸$ chmod u+x myfile
▸Kullanıcı için myfile dosyasına çalıştırabilir yetkisi
vermis olduk. “+” yerine “-” kullanmış olsaydık
yetkiyi kaldırmış olurduk.
67. ▸Dosyamıza sayısal olarak da yetki verebiliriz.
Yukarıda vermis olduğum örnekte 1 yetkinin
verildiğini 0 ise yetkinin verilmediğini ifade
etmektedir.
▸rwx | r-x | r-x
▸111 | 101 | 101
▸$ chmod 755 myfile
▸Kullanıcı için: 1 ∗ 20+ 1 ∗ 21+ 1 ∗ 22 = 7 okuma
yazma ve çalıştırma,
▸Grup için: 1 ∗ 20+ 0 ∗ 21+ 1 ∗ 22 = 5 okuma ve
çalıştırma,
▸Diğer için: 1 ∗ 20+ 0 ∗ 21+ 1 ∗ 22 = 5 okuma ve
yazma yetkilerini vermiş oluruz.
68. Dosya Sahibi Değiştirme
▸Komutu myfile dosyasının sahibini yusuf olarak
değiştirecektir.
▸$ sudo chown yusuf myfile
▸Sistemimizde bir çok kullanıcı olabilir. Bu yüzden
dosya sahiplerini de değiştirebilmemiz gereklidir.
▸$ sudo chgrp calisma myfile
▸Komutu myfile dosyasının grubunu calisma olarak
değiştirecektir.
69. ▸Dosyaya sahip olan kullanıcıyı değiştirirken aynı
zamanda grubunuda değiştirmek istiyorsak
kullanıcı adından sonar iki nokta koyup grup
ismini yazmamız yeterli.
▸$ sudo chown patty:whales myfile
70. setuid
▸Bu komut ile şifremizi değiştirebiliriz.
▸$passwd
▸Burada passwd komutunun yetkileri var. Komuta
sahip olan root grubu da root. Okuma ve yazma
yetkisi de sadece root tanımlanmış. Peki nasıl
çalışıyor bu komut?
71. ▸Yeni bir yetki daha var! s bu yetkilendirme SUID
(set user ID) yetkilendirmesidir. Bir dosyaya böyle
bir yetki verildiği zaman, o programı/komutu kim
çalıştırırsa dosyanın sahibinin yetkileri ile çalıştırır.
▸Peki bu yetkiyi dosyamıza nasıl vereceğiz?
▸$ sudo chmod u+s myfile
▸$ sudo chmod 4755 myfile
▸ Veya sayısal olarak
72. Setgid (Set Group ID)
▸setuid’de olduğu gibi SGID yetkisi de vermek
mümkün. Bunun için:
▸$ sudo chmod g+s myfile
▸$ sudo chmod 2555 myfile
73. Sticky Bit
▸Aynı klasör üzerinde erişme, yazma hakkı olan
kullanıcıların, klasörü ve alt dosyalarını silmelerini
engellemek için kullanılır. Bir dosyayı ortak
kullanıma açtığımızda diğer kullanıcıların bu
dosyayı herkes kullanabilir ancak sadece klasörün
sahibi silebilir.
▸$ sudo chmod +t mydir
▸$ sudo chmod 1755 mydir
76. ps (processes)
▸PID: Process ID
▸TTY: İşlemle ilgili terminal kontrolücüsü
▸Time: İşlemciyi toplam kullandığı süre
▸CMD: Çalıştırılabilir komutun ismi
▸$ ps aux
▸$ top
▸CTRL+ALT+F1 ve CTRL+ALT+F7
TTY1 PTS
77. İşlem Detayları
▸Daha öncesinde bir process’in bir programa
benzediğinden bahsetmiştik. Tam olarak, sistem
programın çalışması için hafıza, işlemci ve I/O kaynak
ayrımı yapar. Process aslında bir programın
parçasıdır.
▸Kernel process’lerden sorumludur. Biz programı
çalıştırdığımız zaman kernel kodu hafızaya yükler ve
onun kaynakları nasıl kullanacağına karar verir.
78. İşlemleri Sonlandırma
▸Bir program çıkmak için _exit sistem komutunu
çağırabilir. Bir işlem biterken bir durum ile biter ve bu
durum 0(sıfır) ise işlemin başarılı olarak bittiği
anlamına gelir.
▸Orphan Processes: Ana process, çocuk(child)
processten önce öldüğünde, kernel child process’in bir
çağrı beklediği için gitmediğini bilir. Bu durum
process’I orphan durumuna sokar ve bunları init altına
koyar. Init sonunda bu orphans işlemler için sistem
çağrısı yapacaktır.
79. ▸Zombie Processes: Zombie işlemler öldürülemez,
teknik olarak ölüdürler. Bu yüzden herhangi bir
sistem sinyali ile onları öldürmek mümkün değildir.
▹Ana işlem bir sistem çağrısı yaptığı zaman zombie
işlem kaybolur. Bu “reaping” olarak adlandırılır.
▹Zombi işlemler, işlem tablosu(process table)
uzayında yer turacaktır ve diğer işlelerin çalışmasını
engelleyecektir.
80. Sinyaller
▸Programları veya işlemleri sonlandırabilmek için
sisteme bazı komutlar verilebilir. CTRL+Z ve CTRL+C
işlemi öldürmek, bekletmek veya uykuya almak için
kullanılabilir.
SIGHUP veya 1 Kapatmak, sonlandırmak (hangup)
SIGINT veya 2 Kesmek, ara vermek (interrupt)
SIGKILL veya 9 Öldürmek
SIGSEGV veya 11 Segmentataion Fault (segment hatası)
SIGTERM veya 15 Yazılım sonlandırma
SIGSTOP veya STOP Durdurma
81. kill
▸Kill komutu işlemi sonlandırmak için kullanılan
komuttur. Kill komutundan sonra istediğimiz
sinyal kodunu verebiliriz.
▸$ kill 12445
▸$ kill -9 12445
82. /proc
▸Linux’ta herşeyin bir dosya olduğunu söylemiştik.
Process’ler bile bir özel dosyadır aslında.
▸$ ls /proc
▸$ cat /proc/PID/status
85. Dosya Sistemi Tipleri
▸Günlükleme(Journaling): Bu özellik öntanımlı olarak
gelir. Herhangi bir güç kaybından kaynaklı veya
sistem kararsızlığından kaynaklı veri kayıplarını
engellemek için yapılan işlemlerin logları ana sistem
dışında bir yerde tutularak very kaybı önlenir.
86. En Bilindik Dosya Sistemi Tipleri
▸Ext4 : GNU/Linux sistemlerin hemen hemen hepsi
bu dosya sistemini kullanmaktadır. Ext2 ve ext3
olan eski versiyonları ile uyumludur. 1 Exabyte ve 16
terabyte boyutlarını destekler.
▸Btrfs : “Better or Butter FS” Linux için yeni bir dosya
sistemidir. Snapshot özelliği ile gelir. Arttırılmış
yedekleme ve daha yüksek performansı vardır.
Henüz stabil ve uyumlu değildir.
87. ▸NTFS & FAT : Windows dosya sistemidir.
▸XFS : Yüksek performanslı dosya sistemidir.
Medya sunucuları gibi yüksek very depolayan
sistemler için uygundur.
▸NFS+ : Macintosh dosya sistemidir.
88. ▸Bu komut ile dosya sistemimizin kullanımını ve
diğer disk bilgilerini görüntüleyebiliriz.
▸$ df -T
89. Disk Anatomisi
▸Hard diskler bölünebilir parçalardır. Örnek vermek
gerekirse, /dev/sda1 ve /dev/sda2, /dev/sda tam
diskinin iki parçasıdır. Diskleri bölümlemek sisteme
yeni bir disk takmaktan daha kolaydır. Bu
bölümleme işlemi verilerimizi birbirinden ayırmaya
yardımcı olur.
▸Partition Table: Her disk kendi bölüm tablosuna
sahiptir. Bu sisteme diskin nasıl bölümlendirildiğini,
hangi bölümün nerede başlayıp nerede bittiğini
söyler. İki tip bölüm tablosu vardır: Master Boot
Record (MBR) ve GUID Partition Table (GPT)
90. ▸Diskler verilerimizi organize etmek için
bölümlerden oluşmuştur. Bu bölümler birbirleriyle
çakışmayan bölümlerdir. Diskte herhangi bir
şekilde biçim verilmemiş yer varsa bu ver free
alandır.
▸MBR:
▹Geleneksel bölümleme tablosudur,
▹MBR’de en fazla 4 ana mantıksal bölüm
oluşturulabilir,
▹2 terabytelık disklere kadar destekler.
91. ▸GBT:
▹Yeni disk bölümleme standartı ile gelir.
▹Sadece bir bölüm tipi vardır.
▹Her bölüm genel bir eşsiz ID’ye sahiptir.
▹Çoğunlukla UEFI tabanlı sistemlerde kullanılır.
▸Dosya Sistemi Yapısı:
▹Boot block: Dosya sisteminin ilk bir kaç sektörüdür.
İşletim sistemi tarafından bilgisayarı başlatabilmek
için ihtiyaç duyulan bilgiler mevcuttur.
▹Super block: boot block’tan sonar tek blok olarak
bulunur. Dosya sistemi hakkında dosya indeksi
mantıksal blok boyutu ve dosya sistemi boyutu gibi
bilgiler içerir
92. ▹Inode table: Dosyalarımızı yöneten bir veritabanı
olarak düşünülebilir. Dosyalarımızın indekslendiği
yerdir. Herbir dosya veya dizin eşsiz kodlara sahiptir.
▹Data blocks: Gerçekten sahip olduğumuz dosyalar
ve dizinler bulunur.
▸Aşağıdaki görüntü MBR bölümleme tablosu
örneğidir:
93. Disk Bölümleme
▸Dosya sistemimizi bölümlemek için aşağıdaki
araçları kullanabiliriz:
▹fdisk: komut satırından çalışır,sadece MBR destekler
▹parted: komut satırından çalışır GBT ve MBR destekler
▹gparted: parted aracının GUI versiyonudur
▹gdisk: komut satırından çalışır, sadece GBT destekler
94. Diski bağlamak(mount) ve
ayırmak(umount)
▸Böylece sdb2 bölümü /mydrive dizini ile erişilebilir
hale geldi.
▸$ sudo mount –t ext4 /dev/sdb2 /mydrive
▸Dosya içeriğini görmeden önce disklerin/disk
bölümlerinin sisteme bağlanması gereklidir.
▸Disk bölününün sisteme bağlanması bir dizine
bağlanması ile gerçekleşir.
▸$ sudo umount /mydrive
▸Komutu ile bağladığımız diski/bölümü ayırabiliriz.
95. ▸Herbir diskin/bölümün evrensel eşsiz ID’sini
görebilirsiniz:
▸$ sudo blkid
▸$ sudo mount UUDI=7570………8000 /mydrive
▸Disklerin/bölümlerin UUID’leri eşsiz olduğu için
bu kodlarını kullanarak da bağlamamız mümkün:
96. /etc/fstab
▸Bilgisayarımızı her açtığımızda sistemimize
disklerimizin otomatik bağlanmasını istiyorsak
diskimizi /etc/fstab dosyasına direk değiştirerek
eklememiz gerekmektedir.
▸UUID: Diskimizin eşsiz ID’si
▸Mount point: bağlı olduğu dizin
▸Type: disk/bölüm tipi
▸Options: diğer bağlama seçenekleri
▸Dump: dump aracı tarafından kullanılır
▸Pass: disk kontorlü yapılıp yapılmayacağını belirler
97. swap
▸Swap alanını silmek için:
▸$ mkswap /dev/sdb2
▸$ swapon /dev/sdb2
▸Swap alanı işletim sistemi tarafından sanal
hafıza(memory) olarak kullanılan alandır. Bu düşük
hafızalı sistemlerin çakılmasını önlemek için
kullanılır.
▸Swap alanı eklemek için:
▸$ swapoff /dev/sdb2
▸Swap alanı genellikle sahip olduğunuz RAM
miktarının iki katı şeklinde olur.
98. Disk Kullanımı
▸Diskimizin ne kadar kullanıldığını görmek için:
▸$ df -h
▸komutu vermemiz yeterlidir. –h eki ile df komutu
ile daha anlaşılır çıktı üretir.
99. Dosya Sistemi Bakımı
▸Bazen dosya sistemimiz bozulmalara uğrayabilir.
Bu durumu düzeltmek için
▸$ sudo fsck /dev/sda
▸komutunu vermemiz yeterlidir.