pwnlydays - linux 101
TRANSCRIPT
Linux 101Canyoupwnme | PwnlyDays
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_
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
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
Distrowatch.com
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.
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
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ğ
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Ubuntu Kurulumu
Temel Linux Kullanım Bilgileri
Kabuk
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ı
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
/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.
/bootİşletim sisteminin açılması için gerekli bütün dosyalar bu dizindedir. Çekirdekler ve initrd kalıpları bu dizinde yer alır.
/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
/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.
/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.
/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.
/mediaDisket, cd-rom, dv-rom, cd/dvd-rw gibi sökülüp takılabilir dosya sistemleri bu dizine bağlanmaktadır.
/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
/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
/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
/rootSistem yöneticisinin ev dizinidir. Sistem kullanıcısı 'root' isimli hesaba sahiptir ve bu hesabın ev dizini /root dizinidir.
/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.
/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.
/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
/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.
Komutlar
$ man komut
$ komut --help
$ komut -h
$ komut parametreler
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
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
moreBir veya daha fazla dosyanın içeriğini ekranda görmek için kullanılır.
$ more /etc/passwd
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.
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.
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'
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.
duDisk kullanım istatistiklerini gösterir.
$ du -h
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
rmDosya veya dizin siler.
$ rm –f beni.oku
$ rm –fr dizin1
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ı
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
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.
pwdİçinde bulunulan dizinin yolunu verir. Bazı kabuklarda bu komut dahili komut olarak da bulunmaktadır.
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
findDosya aramak için kullanılır.
Kullanımı:
$ find dizin seçenekler
$ find / -name httpd.conf
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
chownDosya sahibi ve grubunu değiştirir.
$ chown simsek:admin beni.oku
$ ls -l beni.oku
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
psSistemde etkin olarak çalışan süreçleri listeler.
# ps
# ps au
# ps aux
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.
idKullanıcı bilgilerini verir.
# id
whoSistem üzerinde şu an kimlerin olduğunu ve ne zaman girdiklerini gösterir.
# who
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
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
unameSistem hakkında bilgiler verir.
# uname -a
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
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
Linux Yetkilendirme Modeli
$ ls -l /bin/cp
-rwxr-xr-x 1 root root 151024 Şub 18 2016 /bin/cp
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
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
İzin Türleri
'r' 4 okuma izni
'w' 2 yazma izni
'x' 1 çalıştırma izni
İzin Seviyleriu user
g group
o other
# chmod g+w file
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
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
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ı
/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
/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.
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
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.
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
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
Paket YönetimiDebian tabanlılar :
deb
apt-get
RedHat tabanlılar :
rpm
yum
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
yumPaket kurmak için:
# yum install package
Paketi güncellemek için:
# yum update package
Paketi silmek için:
# yum remove package
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