pwnlydays - linux 101

115
Linux 101 Canyoupwnme | PwnlyDays

Upload: canyoupwnme

Post on 12-Jan-2017

306 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Pwnlydays - Linux 101

Linux 101Canyoupwnme | PwnlyDays

Page 2: Pwnlydays - Linux 101

Biz kimiz?

Mustafa Kaan DEMİRHAN

#DEU Ceng 

@mstfknn

Sinan ŞAHİN

#OMÜ | BİDB Sistem Yönetimi | BÖTE Öğrencisi

@_sinansahin_

Caner FİLİBELİOĞLU

@dimakoci_

Page 3: Pwnlydays - Linux 101

KonularLinux ve GNU Nedir?

Dağıtımlar Neler? Hangi Dağıtımı Seçmeliyim?

Ubuntu Kurulumu

Temel Linux Kullanım Bilgileri

Kabuk

Dosya Sistemi

Komutlar

Page 4: Pwnlydays - Linux 101

KonularLinux Yetkilendirme Modeli

Kullanıcı Yönetimi

Süreç Yönetimi

Temel Sistem Yapılandırma Dosyaları

Paket Yönetimi

Kaynak Tüketimi Takip Araçları

Dosya Editörleri

Page 5: Pwnlydays - Linux 101

Distrowatch.com

Page 6: Pwnlydays - Linux 101

Ubuntu KurulumuAdım adım sanal makineye Ubuntu kuracağız.

Gereksinimler:

1.Ubuntu 16.04 iso dosyası

2.Sanallaştırma Yazılımı

Bu sunumda sanallaştırma yazılımı olarak Virtualbox tercih edilmiştir.

Page 7: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 8: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 9: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 10: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 11: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 12: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 13: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 14: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 15: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 16: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 17: Pwnlydays - Linux 101

Ubuntu KurulumuBağlantı Türleri:

1.Nat

2.Nat Ağı

3.Köprü Bağdaştırıcı(Bridge)

4.Sadece Anamakine Bağdaştırıcısı(Host Only)

5.Dahili Ağ

Page 18: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 19: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 20: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 21: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 22: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 23: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 24: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 25: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 26: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 27: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 28: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 29: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 30: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 31: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 32: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 33: Pwnlydays - Linux 101

Ubuntu Kurulumu

Page 34: Pwnlydays - Linux 101

Temel Linux Kullanım Bilgileri

Page 35: Pwnlydays - Linux 101
Page 36: Pwnlydays - Linux 101
Page 37: Pwnlydays - Linux 101
Page 38: Pwnlydays - Linux 101
Page 39: Pwnlydays - Linux 101
Page 40: Pwnlydays - Linux 101
Page 41: Pwnlydays - Linux 101
Page 42: Pwnlydays - Linux 101
Page 43: Pwnlydays - Linux 101
Page 44: Pwnlydays - Linux 101
Page 45: Pwnlydays - Linux 101

Kabuk

Page 46: Pwnlydays - Linux 101
Page 47: Pwnlydays - Linux 101
Page 48: Pwnlydays - Linux 101
Page 49: Pwnlydays - Linux 101
Page 50: Pwnlydays - Linux 101
Page 51: Pwnlydays - Linux 101
Page 52: Pwnlydays - Linux 101

Dosya Sistemi/bin Temel komutlar

/boot Ön yükleyicinin kullandığı dosyalar

/dev Aygıt dosyaları

/etc Bilgisayara özel yapılandırma

/lib Paylaşılan temel kütüphaneler ve çekirdek modülleri

/media Çıkarılabilir aygıtlar için bağlama noktası

Page 53: Pwnlydays - Linux 101

Dosya Sistemi/mnt Dosya sistemlerini geçici olarak bağlama noktası

/opt Sonradan eklenen uygulamalar

/sbin Temel sistem programları

/tmp Geçici dosyalar

/usr İkincil kök, kullanıcı için yeni dizilim noktası

/var Değişken veriler

Page 54: Pwnlydays - Linux 101

/bin/bin dizini sistem yöneticileri ve normal sistem kullanıcıları için kullanışlı temel komutları barındırır.

Kullanıcı kabuğu bash ve ls, cp, rm, cat gibi pek çok temel komutu içermesi nedeni ile en basit sistem kurulumunda bile oluşturulur.

Page 55: Pwnlydays - Linux 101

/bootİşletim sisteminin açılması için gerekli bütün dosyalar bu dizindedir. Çekirdekler ve initrd kalıpları bu dizinde yer alır.

Page 56: Pwnlydays - Linux 101

/devBu dizin özel veya aygıt dosyalarının konumudur. UNIX dünyasındaki “herşey bir dosyadır” kuralının bir göstergesi olarak bilgisayara bağlı aygıtlar, donanımlar /dev altında kendilerine erişimi sağlayan bir dosyaya sahiptirler.

# cat rumelihisari.wav > /dev/dsp

Page 57: Pwnlydays - Linux 101

/etcSistemin önemli yapılandırma dosyaları bu dizindedir.

Yapılandırma dosyaları çalıştırılamayan fakat okunan ve yorumlanan dosyalardır.

Bir programın nasıl çalışacağını belirlerler.

Buradaki dosyalar olmadan sistem programları düzgün çalışmayacaktır.

Her zaman yedeklemede önceliğe sahiptir.

Page 58: Pwnlydays - Linux 101

/homeLinux çok kullanıcılı bir işletim sistemi olarak kullanıcıların dosyalarını başkalarına karşı koruduğu gibi herkese çalışması için bir ev (home) dizini sunar. Linux'te standart olarak kullanıcı dizinleri /home altında yer alır. Buraya kullanıcı istediği dosyaları yerleştirir, programları kurar veya siler.

Page 59: Pwnlydays - Linux 101

/libBu dizin çekirdek modülleri ve sistem kütüphanelerini içerir. Çekirdek modülleri sistemin açılışı için gerekli olup bazı donanımların sistem tarafından tanınmasını sağlar. Sistem kütüphaneleri ise /bin ve /sbin altındaki programların çalışması için gerekli C kütüphaneleridir.

Kütüphane dosyalarının uzantısı *.so şeklindedir.

Page 60: Pwnlydays - Linux 101

/mediaDisket, cd-rom, dv-rom, cd/dvd-rw gibi sökülüp takılabilir dosya sistemleri bu dizine bağlanmaktadır.

Page 61: Pwnlydays - Linux 101

/mntDosya sistemlerini veya aygıtları bağlamak için kullanılan genel bağlama noktasıdır. Bağlama işlemi mount komutuyla yapılır:

# mount /dev/hdd /mnt

Bu dizin içerisinde /mnt/cdrom /mnt/floppy gibi dizinler görülebilir. Sistem yöneticisi kendisi isterse burada istediği bağlama noktalarını oluşturabilir:

# mount /dev/hda1 /mnt/windows_xp

Page 62: Pwnlydays - Linux 101

/optİşletim sisteminin öntanımlı kurulumu ile gelmeyen tüm yazılım ve paketlerin kurulumu için /opt dizini tahsis edilmiştir. Örneğin, Firefox, LibreOffice

Page 63: Pwnlydays - Linux 101

/proc/proc sanal bir dosya sistemidir. Linux'un sunduğu en güçlü özelliklerden biri de /proc dosya sistemidir. Buradaki dosyalar gerçek içerik taşımaz. Çalışma zamanında çekirdek tarafından içerikler güncellenebilir. Sistem belleği, bağlanmış aygıtlar, donanım bilgisi, süreçlerin durumu gibi çekirdeğe ait bilgileri barındırır.

# lsmod

Page 64: Pwnlydays - Linux 101

/rootSistem yöneticisinin ev dizinidir. Sistem kullanıcısı 'root' isimli hesaba sahiptir ve bu hesabın ev dizini /root dizinidir.

Page 65: Pwnlydays - Linux 101

/sbinSistem programları (system binary) bu dizinde bulunur. Sistem programlarının normal programlardan (/bin) farkı sistem yönetimine yönelik olmalarıdır. Büyük bir kısmını çalıştırmaya normal kullanıcılar yetkili değildir. Çalıştırabildikleri ise sistemden bilgi almaya yönelik, sistemde değişiklik yapmayan sistem komutlarıdır.

Page 66: Pwnlydays - Linux 101

/usrSistemde en çok yer kaplayan dizin /usr dizinidir. Bu dizin kullanıcı için ikinci bir kök dizin olarak düşünülebilir. Nasılki sistemin /bin, /sbin dizinleri var; /usr/bin ve /usr/sbin dizinleri de vardır. Sisteme sonradan kullanıcı tarafından kurulan programlar /usr 'ı kök kabul ederek dosya sistemine yerleşirler.

Örneğin kullanıcı programları /usr/bin'e, sistem programları /usr/sbin'e, yapılandırma dosyaları /usr/etc veya /usr/local/etc'ye yerleştirilir.

Page 67: Pwnlydays - Linux 101

/varGenel olarak değişken (variable) veriler/dosyalar bu dizinde tutulur. Örneğin sistem günlükleri, mail kuyruğu, gelen mailler, yazıcı kuyruğu, programların kilit dosyaları vs…

# ls /var

Page 68: Pwnlydays - Linux 101

/tmpGeçici olarak kullanılacak dosyalar bu dizinde oluşturulur. Bütün programlar ve kullanıcılar bu dizine yazabilirler. Buradaki dosyaları ne yaptığınıza emin olmadan silmeniz tehlikeli olabilir. Çünkü silinen dosyaları o an çalışan süreçlerden biri kullanıyor olabilir.

Page 69: Pwnlydays - Linux 101

Komutlar

$ man komut

$ komut --help

$ komut -h

$ komut parametreler

Page 70: Pwnlydays - Linux 101

lsDizin içeriğini (dosya ve alt dizinleri) listeler.

ls komutunun pek çok parametresi vardır. Yardım sayfaları (man ls) kullanılarak detaylı bilgi alınabilir.

$ ls -l

$ ls -a

Page 71: Pwnlydays - Linux 101

catDosyaları birleştirmek ve standart çıkışa basmak için kullanılır.

$ cat 1.txt

Ben 1.dosyayim

$ cat 1.txt 2.txt

Ben 1.dosyayim

Ben 2.dosyayim

Page 72: Pwnlydays - Linux 101

moreBir veya daha fazla dosyanın içeriğini ekranda görmek için kullanılır.

$ more /etc/passwd

Page 73: Pwnlydays - Linux 101

headVerilen dosyanın ilk satırlarını görüntüler. –n ile ilk kaç satırın görüntülenmesi gerektiği belirtilir.

Eğer satır sayısı verilmez ise ön tanımlı olarak ilk 10 satırı gösterir.

$ head –n 2 beni.oku

Ben sevimli bir dosyayim.

Bende toplam 3 satir vardir.

Page 74: Pwnlydays - Linux 101

tailDosyanın son kısımlarını gösterir. –c ile byte sayısı, -n ile satır sayısı verilebilir. Eğer dosya verilmez ise standart girişten okur.

$ tail -n 1 beni.oku

Iste bu da son satir.

Page 75: Pwnlydays - Linux 101

cpDosya kopyalar. Bir dosyayı başka bir dosya olarak kopyalayacağı gibi birkaç dosyayı bir dizine de kopyalayabilir.

$ cp -pv *.txt arsiv/

`11-01-2007.txt' -> `arsiv/11-01-2007.txt'

`11-02-2007.txt' -> `arsiv/11-02-2007.txt'

`ozet.txt' -> `arsiv/ozet.txt'

Page 76: Pwnlydays - Linux 101

dfBelirtilen dosya sistemine ait veya bağlanmış dosya sistemlerinin boş disk alanını gösterir. Ölçü birimi her blok için 512 byte’tır. BLOCKSIZE çevre değişkeni ile görüntüleme birimi değiştirilebilir.

Page 77: Pwnlydays - Linux 101

duDisk kullanım istatistiklerini gösterir.

$ du -h

Page 78: Pwnlydays - Linux 101

mvBir dosyayı veya dizini başka bir dosya veya dizin olarak taşır. Veya birkaç dosya veya dizini başka bir dizine taşır.

$ mv old.file new.file

Page 79: Pwnlydays - Linux 101

rmDosya veya dizin siler.

$ rm –f beni.oku

$ rm –fr dizin1

Page 80: Pwnlydays - Linux 101

lnDosyalar ve dizinler arasında bağlantılar kurar. Bu komut, orijinal dosya ile aynı yetkilendirmeye sahip yeni bir dosya kaydı oluşturur.

İki çeşit bağlantı vardır. Sıkı (hard) bağlantılarda yapılan değişikler orijinal dosyayı etkiler. Sembolik (soft) bağlantı sadece orijinal dosyayı gösteren bir isimdir. Sembolik bağlantıya erişim, orijinal dosyaya erişime neden olur. Ancak sembolik bağlantının silinmesi orijinal dosyayı silmez.

Kullanımı:

ln seçenek mevcut_dosya olusturulacak_bağlantı

Page 81: Pwnlydays - Linux 101

mkdirDizin oluşturmak için kullanılır.

-p

Oluşturulacak dizinin üst dizinleri yoksa onları da oluşturur.

$ mkdir arsiv

$ mkdir –p 2007/02/17/18/00

Page 82: Pwnlydays - Linux 101

touchEğer belirtilen dosya mevcut ise dosya erişim ve değiştirilme zamanlarını günceller. Eğer belirtilen dosya mevcut değilse dosyayı oluşturur.

Page 83: Pwnlydays - Linux 101

pwdİçinde bulunulan dizinin yolunu verir. Bazı kabuklarda bu komut dahili komut olarak da bulunmaktadır.

Page 84: Pwnlydays - Linux 101

grepDosya içinde arama yapmak için kullanılır.

grep'in temel kullanımı:

$ grep [-seçenekler] desen(pattern) dosyalar

$ grep ubuntu /etc/passwd

Page 85: Pwnlydays - Linux 101

findDosya aramak için kullanılır.

Kullanımı:

$ find dizin seçenekler

$ find / -name httpd.conf

Page 86: Pwnlydays - Linux 101

chmodDosya modunu değiştirir. Dosya modları, dosya üzerindeki yetkileri üç grup için düzenler: 1. Dosya sahibi 2. Dosya sahibinin grubundakiler 3. Herkes

Yetkiler ise üç adettir: Okuma, yazma ve çalıştırma.

Yetkiler sayılarla (Okuma = 4, yazma = 2, çalıştırma = 1) veya r, w ve x gibi harflerle temsil edilebilir.

$ chmod +r sirala.sh

$ chmod u+w sirala.sh

$ chmod g+x,o+x sirala.sh

Page 87: Pwnlydays - Linux 101

chownDosya sahibi ve grubunu değiştirir.

$ chown simsek:admin beni.oku

$ ls -l beni.oku

Page 88: Pwnlydays - Linux 101

exprMatematiksel ifadeleri hesaplamak için kullanılır. İfadeye ait bütün elemanlar ayrı parametre olarak verilmelidir. Yani aralarında boşluk olmalıdır.

$ expr 5 \> 2

$ expr 3 + 4

$ expr 13 % 10

Page 89: Pwnlydays - Linux 101

psSistemde etkin olarak çalışan süreçleri listeler.

# ps

# ps au

# ps aux

Page 90: Pwnlydays - Linux 101

killÇalışan bir süreci sonlandırmak veya sürece sinyal göndermek için kullanılır.

# kill –Sinyalnumarası pid

Yalnızca yetkili kullanıcı diğer süreçlere sinyal gönderebilir. Normal kullanıcılar ancak kendi oluşturdukları süreçlere sinyal gönderebilirler.

Page 91: Pwnlydays - Linux 101

idKullanıcı bilgilerini verir.

# id

Page 92: Pwnlydays - Linux 101

whoSistem üzerinde şu an kimlerin olduğunu ve ne zaman girdiklerini gösterir.

# who

Page 93: Pwnlydays - Linux 101

wcKelime, satır, karakter ve byte sayar. Girdiyi standart girişten veya parametre olarak verilen dosyadan alır.

-c Karakter sayısını verir.

-l Satır sayısını verir.

-m Karakter sayısını verir. Ancak eğer yerel ayarlar multibyte’ı destekliyorsa onları da sayar.

-w Kelime sayısını sayar.

$ cat beni.oku | wc –l

Page 94: Pwnlydays - Linux 101

cutStandart girişten okuduğu satırlar içindeki istenen sütunları gösterir. Sütun seçme işlemi bir ayıraca göre yapılabileceği gibi sabit boyda da yapılabilir.

# cat /etc/passwd

Page 95: Pwnlydays - Linux 101

unameSistem hakkında bilgiler verir.

# uname -a

Page 96: Pwnlydays - Linux 101

shutdownVerilen zamanda sistemi kapatır.

-p Sistemi durur (halt) ve gücü keser (donanımın desteklemesi lazım).

-r Sistemi yeniden başlatır (reboot).

# shutdown –r now

# shutdown –p now

Page 97: Pwnlydays - Linux 101

syncBekleyen disk yazmalarının tamamlanmasını zorlar. Genellikle reboot ve halt işlemlerinden önce kullanılır. Eğer önbellekte duran ve henüz diske yazılmayan bilgiler varsa bunların diske yazılmasını zorlar. Böylece sistemi kapatmadan önce veri kaybı olmayacağı garantilenir. Reboot ve halt komutları verildiğinde çalışan betikler bu işlemi otomatik olarak yaptığından sistem yöneticisinin normalde ellen bu işlemi yapmasına gerek yoktur. Hiçbir parametre almaz.

# sync

Page 98: Pwnlydays - Linux 101

Linux Yetkilendirme Modeli

$ ls -l /bin/cp

-rwxr-xr-x 1 root root 151024 Şub 18 2016 /bin/cp

Page 99: Pwnlydays - Linux 101

Yetkiler'ls' komutu -l parametresi ile kullanıldığında yukarıdaki gibi dosyaların yetkilerini belirten ayrıntılı bir çıktı verir. Satır başında yer alan -rwxr-xr-x bu dosyaya ait hakları belirtmektedir. Bu haklar üç kısımdan oluşmaktadır.

-rwxr-xr-x

Page 100: Pwnlydays - Linux 101

Dosyaların Türleri'-' file(dosya)

'd' directory (dizin)

'l' symbolic link (sembolik bağ)

'c' character special device (karakter aygıt)

'b' block special device (blok aygıt)

'p' fifo

's' socket

Page 101: Pwnlydays - Linux 101

İzin Türleri

'r' 4 okuma izni

'w' 2 yazma izni

'x' 1 çalıştırma izni

Page 102: Pwnlydays - Linux 101

İzin Seviyleriu user

g group

o other

# chmod g+w file

Page 103: Pwnlydays - Linux 101

Kullanıcı ve Gruplar'ls -l' çıktısındaki önemli bir bilgi de üçüncü ve dördüncü sütunda yer alan dosyanın sahibine ait kullanıcı ve grup bilgisidir.

# whoamiroot

# su – sinan

$ whoamisinan

$ groupssinan adm cdrom sudo dip plugdev lpadmin sambashare

Page 104: Pwnlydays - Linux 101

Dosyanın sahibini ve grubunu değiştirmeBir dosyanın sahibini ve grubunu değiştirmek için:

# chown root /file

# chgrp wheel /file

Bu iki işlem tek bir chown komutu kullanılarak da yapılabilir:

# chown root:wheel /file

Page 105: Pwnlydays - Linux 101

Kullanıcı Yönetimi

Linux, kullanıcıları yönetmek için iki temel dosyayı kullanmaktadır:

/etc/passwd: Kullanıcı veritabanı

/etc/shadow: Grup veritabanı

Page 106: Pwnlydays - Linux 101

/etc/passwdKullanıcıya ait bütün bilgiler /etc/passwd dosyasında yer alır. Bu dosya satır satır ve her satırı kolon (:) simgesi ile ayrılmış aşağıdaki gibi kullanıcı bilgilerini içerir:

kullanıcı_adı:parola:kullanıcı_no:grup_no:açıklama:ev_dizini:kabuk

# tail /etc/passwd

# tail /etc/shadow

Page 107: Pwnlydays - Linux 101

/etc/groupHer kullanıcı bir gruba üyedir. Grup kavramı, ortak çalışma ve aynı yetkilere sahip kullanıcılar oluşturabilmek için oluşturulmuştur. Her kullanıcının grup bilgisi passwd dosyasında yazmaktadır. İçeriği aşağıdaki gibidir:

sambashare:x:128:sinan

İlk sütun grup ismini, ikincisi parola alanını, üçüncüsü grup numarasını ve dördüncü alan bu gruba üye kullanıcıları gösterir.

Page 108: Pwnlydays - Linux 101

Hesap İşlemleriYetkili kullanıcılar sisteme kullanıcı ekleyebilir, çıkarabilir, parola değiştirebilir.

# groupadd test

# useradd testusr -d /home/testusr -s /bin/bash -g test

# id testusr

uid=9029(testusr) gid=9060(test) groups=9060(test)

# passwd testusr

Page 109: Pwnlydays - Linux 101

Açılış DosyalarıKullanıcıların sisteme her girişinde yapılmak istenen işlemler /etc/profile dosyasına yazılır. Bu dosya tüm kullanıcılar için geçerli olup yetkili kullanıcı tarafından düzenlenebilir. Kullanıcılar ise kendileri için her girişte yapılmasını istedikleri işlemleri kendi ev dizinindeki .bash_profile dosyasına yazar. Eğer bu dosya yoksa oluşturulması gerekir.

Her kabuk programının açılış dosyası farklıdır. Bash kabuğu .bash_profile dosyasını kullanır.

Page 110: Pwnlydays - Linux 101

Süreç YönetimiBir progrmın çalışan haline süreç (process) denir ve Linux altında çalışan her bir süreç, PID denen süreç numarası ile takip edilir.

$ ps

$ ps -aux

Page 111: Pwnlydays - Linux 101

Derleyerek Program KurmaLinux altında programları derlemek için gcc kullanılır. Programlar insanların anlayacağı dille yazıldığından makinanın (programları yorumlayan işlemcidir) anlayacağı dile çevrilmesi lazım. Bu işi derleyiciler yapar ve bu işleme program derleme denir.

# tar -zxf kaynakkod.tar.gz

# ./configure

# make

# make install

Page 112: Pwnlydays - Linux 101

Paket YönetimiDebian tabanlılar :

deb

apt-get

RedHat tabanlılar :

rpm

yum

Page 113: Pwnlydays - Linux 101

rpmPaket kurmak:

# rpm -ivh xsnow-1.41-1.i386.rpm

Paketi güncellemek için:

# rpm -Uvh xsnow-1.42-1.i386.rpm

Paketi silmek için:

# rpm -e xsnow

Page 114: Pwnlydays - Linux 101

yumPaket kurmak için:

# yum install package

Paketi güncellemek için:

# yum update package

Paketi silmek için:

# yum remove package

Page 115: Pwnlydays - Linux 101

apt-getPaket kurmak için:

# apt-get install package

Paket güncellemek için:

# apt-get -u upgrade

Paketi kaldırmak için:

# apt-get remove package