Labaratuar içersinde kabuk üzerinden erişim, dosya yapıları, dizinlere erişim, Temel komutlara giriş ve filtreleme komutlarından bahsedeceğiz. Ayrıca küçük bir test ile konular ile ilgili bilginizi sınayabileceksiniz.


Bölüm içersinde aşağıdaki konular işlenecektir:


Labaratuar Kullanım İpuçları

Eğitim içersinde, komut satırı bilgileri aşağıdaki üç farklı şekilde belirtilmiştir.

  1. buradaki gibi görünen komut betimleri şeklinde gösterilmler daha çok örnekler ve yazılması gereken komutları tanımlamak için kullanılır.

  2. Aşağıdaki gibi kutu içersinde gördüğünüz kodlar üzerine tıkladığınızda, kopyala yapıştır yapmanıza gerek kalmadan terminal içersinde çalıştırılacaktır:
    uname -a
    
  3. Aşağıda gördüğünüz gibi bir pencere içersinde yazılmış olan kod betimleri sizin klavyeden yazmanız gereken kod betimleridir. Genellikle benzersiz bir ID veya başka bir değişken girmeniz gerekiyordur. Buradaki benzersiz veri eğitim sırasında kullandığınız ortam içersinden bulunabilir. <> içersinde bulunan maddeler sizin değiştirmeniz gereken verinin yerini göstermektedir.
    hostnamectl set <sunucu adı>
    


9. Dosya dizin bulma ve erişim yönetimi

(tree, find, chown, chmod, chgroup, whatis, which, exit)

Dosyalar, yapıları ve erişim yetkilerini anlatıyoruz burada


Tree

Bulunduğunuz klasörü ve dizin yapısını gösterir, Tree ingilizce ağaç demektir. dizinler ve altdizinler hakkında fikir edinmenizi sağlar.

kullanım şekli

tree [hangi dizin] [parametre]

sıklıkla kullanılan parametre -L (Level, Seviye) parametresidir, çünkü bilgisayardaki dizinlerin listesi çok uzun olabilir. L ile kaç seviye ilerlemeniz gerektiğini belirtebilirsiniz.

Örnek olarak

cd /
tree /usr -L 1

aynı komutu parametre olmadan çalıştırırsanız çıktıyı almanız çok daha uzun sürecektir.

cd /
tree /usr

find - bul

ismindende anlaşılacağı gibi bulmak istediğiniz dosyaları/dizinleri bulmanıza yarar. Linux üzerinde kullanımını mutlaka öğrenmeniz gereken komutlardan biridir.

Unix benzeri işletim sistemlerinde en önemli ve en sık kullanılan komut satırı yardımcı programlarından biridir. Bul komutu, bağımsız değişkenlerle eşleşen dosyalar için belirttiğiniz koşullara göre dosya ve dizinlerin listesini aramak ve bulmak için kullanılır.

Bul, dosyaları izinlere, kullanıcılara, gruplara, dosya türüne, tarihe, boyuta ve diğer olası kriterlere göre bulabileceğiniz gibi çeşitli koşullarda kullanılabilir.

Kullanım şekli:

find [nereden başlayayım] [nasıl birşey bulacam] [-opsiyonlar] [ne bulacağım]

Örnekler

/usr klasörü altında share isminde dosya veya klasör aramak için

cd /usr
find . -name share

veya

find /usr -name share

/usr klasörü altında share diye başlayan herşey, bulun

find /usr -name share*

burada wildcard * kullanarak “share ile başlasın sonu nasıl biterse bitsin” demiş oluyoruz.

/usr klasörü altındaki share ile başlayan dosyaları bulun

find /usr -type f -name share*

klasör için type d parametresini kullanmamız gerekir

find /usr -type d -name share*

root kullanıcısına ait .txt uzantılı tüm dosyaları bulun

find / -user root -iname "*.txt"  

burada kullandığımız iname büyük/küçük harf ayrımı yapmayacak (case insensitive) şekilde arama yapar

son 2 saatte değişikliğe uğramış tüm dosyaları bulun

find / -mmin -120

son 90 günde erişilmiş dosyaları listele

find / -atime 90

Disk üzerindeki 1000MB ‘tan büyük dosyaları bulun ve silin

Dikkat! bu tür silme işlemleri geri dönüşü olmayan işlemlerdir, find komutunu exec parametresi ile kullanmadan önce mutlaka excec olmadan çalıştırın ve nasıl bir çıktıya işlem yapacağını görün.

find / -type f -size +1000M -exec rm -f {} \;

Bilgisayarınızdaki tüm 10 MB’tan büyük olan xlsx dosyaları bulun ve silin.

find / -type f -name *.xlsx -size +10M -exec rm {} \;

İpucu bazen çıktıları bir dosyaya alıp incelemek daha kolay olabilir, ben zaman zaman ne arayacağımdan emin olmadığımda bunu yaparım.

find . >/tmp/findout.txt

sonra less ile görüntüleyebilirsiniz

less /tmp/findout.txt

Dosyalara erişim ve kullanıcı hakları.

(chown, chmod, chgroup)

Öncelikle bir dizin içine gidip dosyaları listeleyelim (long opsiyonu ile)

cd /etc
ls -l

gördüğünüz liste içersindeki dağılım ve anlamları aşağıdaki gibidir.


chown ve chgrp Change Owner/Change Group - Kullanıcı Gurup Değiştir

Kullanıcı sahipliğini değiştirir,

Kullanım şekli,

chown kullanıcı-adı dosya chown kullanıcı-adı:sahip-olan-gurup dosya chown kullanıcı-adı:sahip-olan-gurup klasör chown [parametreler] kullanıcı-adı:sahip-olan-gurup dosya

Örnek kullanım

önce bir dosya yaratalım

cd /tmp
touch hakdeneme.txt

dosyanın haklarına bakalım

ls -l hakdeneme.txt

dosyanın kullanıcısını değiştirelim, sistem de sys isimli bir sistem kullanıcısı vardır, dosyamızın sahipliğini ona çevirelim

chown sys hakdeneme.txt

aynı şekilde gurup değişikliği de chgrp komutu ile yapılır.

chgrp sys hakdeneme.txt

dosyayı tekrar listelediğimizde yetkilerinin değiştiğini görürüz.

ls -l hakdeneme.txt

tek bir seferde gurup ve kullanıcı değişikliğini yapabiliriz araya : koyduğumuzda kullanıcı:gurup şeklinde yetki verecektir

touch hakdenemetek.txt
ls -l hakdenemetek.txt
chown sys:sys hakdenemetek.txt
ls -l hakdenemetek.txt

chmod Change Mode - Erişim Yetkisini Değiştir

testimiz için dosyamızı oluşturalım ve yetki verelim

echo "test file" > /tmp/ornek.txt
chmod 777 /tmp/ornek.txt

Chmod komutu, bir dosya veya klasördeki dosya izinleri bayraklarını ayarlar. Bayraklar dosyayı kimin okuyabileceğini, yazabileceğini veya çalıştırabileceğini tanımlar. Dosyaları -l (ls -l) seçeneğiyle listelediğinizde, şuna benzeyen bir karakter dizisi görürsünüz.

-rwxrwxrwx

ls -l /tmp

İlk karakter a ise - öğe bir dosyadır, eğer bir d ise öğe bir dizindir. Dizenin geri kalanı üç karakterlik üç settir. Soldan ilk üçü, sahibin dosya izinlerini, ortadaki üçü grubun dosya izinlerini ve en sağdaki üç karakter diğerlerinin izinlerini temsil eder. Her kümede, bir r okuma, bir w yazma ve bir x yürütme anlamına gelir.

R, w veya x karakteri varsa, bu dosya izni var demektir. Harf yoksa ve onun yerine bir - görünürse, bu dosya izni yok demektir.

Chmod‘u kullanmanın bir yolu, sahibine, gruba ve diğerlerine vermek istediğiniz izinleri 3 basamaklı bir sayı olarak sağlamaktır. En soldaki rakam, sahibi temsil eder. Ortadaki rakam grubu temsil eder. En sağdaki rakam diğerlerini temsil eder. Kullanabileceğiniz rakamlar ve neyi temsil ettikleri burada listelenmiştir:

0: İzin yok
1: İzni uygula
2: Yazma izni
3: Yazma ve yürütme izinleri
4: Okuma izni
5: İzinleri okuyun ve çalıştırın
6: Okuma ve yazma izinleri
7: Okuma, yazma ve yürütme izinleri

ornek.txt dosyamıza baktığımızda, üç karakter setinin de rwx olduğunu görebiliriz. Bu, herkesin dosya üzerinde okuma, yazma ve yürütme haklarına sahip olduğu anlamına gelir.

Sahip için okuma, yazma ve çalıştırma (listemizden 7) iznini ayarlamak için; grup için okuyun ve yazın (listemizden 6); ve chmod komutuyla 765 rakamlarını kullanmamız gereken diğerleri için okuyun ve çalıştırın (listemizden 5):

chmod -R 765 /tmp/ornek.txt

Burada kullandığımız -R parametresi dosya/dizin ve alt dizinlere de aynı erişim yetkilerini tanımlamamızı sağlar.

Sticky Bit nedir

Dosyalar veya dizinler üzerinde “yapışkan bit” tanımladığınızda diğer tüm yetkiler yok sayılır. Normalde dizinler için, kullanıcının dizinin, dosyanın sahibi olmadığı veya kök olmadığı sürece, kullanıcıların içerdiği dosyaları silmelerini ve hatta yeniden adlandırmalarına izin vermez fakat sticky bit tanımlarsanız, her türlü değişiklik yapılabilir.

$ chmod o+t [dizin_adı]

veya

$ chmod 1755 [dizin_adı]

/tmp dizini sticky bit kullanımı için tipik bir örnektir. Herkes buradaki dosyaları siler ve yazabilir.


10. Dosya Arşivleme komutları

dd, tar, cpio, gzip, gunzip, bzip2, xz


dd data dublicator - Veri Çoklayıcı

dd komutu, “veri çoğaltıcı” anlamına gelir ve verileri kopyalamak ve dönüştürmek için kullanılır. Linux’un çok güçlü, düşük seviyeli bir yardımcı programıdır ve çok daha fazlasını yapar, her Linux Sistem Yöneticisi için vazgeçilmez bir araçtır.
Peki neler yapabilirsiniz?

  • Tüm sabit diski veya bölümü yedekleyebilir veya geri yükleyebilirsiniz.
  • MBR Yedeklemesi (Disk bölümleme ve Önyükleme Bilgisi) - 512 Byte
  • Manyetik bant formatını kopyalayabilir ve dönüştürebilir, ASCII ve EBCDIC formatları arasında dönüştürme yapabilir, baytları değiştirebilir ve ayrıca küçük harfleri büyük harfe dönüştürebilirsiniz.
  • Önyükleme imajları oluşturmak için, Linux çekirdeği oluşturma dosyaları tarafından kullanılır.
  • güvenlik için bir disk içeriğini şifreleyebilir, şifreli kaydedebilirsiniz.
  • Uzak bir donanıma şifrelenmiş şekilde imaj verisi kopyalayabilirsiniz

Kullanım şekli:

dd if=KAYNAK_DOSYA of=HEDEF_DOSYA [Parametreler]

Tüm sabit diski yedeklemek için

dd if=/dev/sda1 of=/tmp/yedek-sda1.img 

Tüm sabit diski sıkıştırarak yedeklemek için

dd if=/dev/sda1 |gzip -c > /tmp/yedek-sda1.img.gz

yedeklenmiş bir diski geri yüklemek

dd if=/tmp/yedek-sda1.img of=/dev/sda1

sıkıştırılmış yedeği geri yüklemek

gzip -dc /tmp/yedek-sda1.img.gz | dd of=/dev/sda1

A bilgisayarındaki /dev/sda1 diskini, uzaktaki B bilgisayarına /dev/sdc2 yazmak
A:/dev/sda1 -->> B:/dev/sdc2

dd if=/dev/sda1 | gzip -1 - | ssh root@uzak-bilgisayar dd of=/dev/sdc2

Bu işlemi yaparken pv isimli program ile kopyalanmayı monitor edebilirsiniz

dd if=/dev/sda1 | gzip -1 - | pv | ssh root@uzak-bilgisayar dd of=/dev/sdc2

Yukarıdaki işlem ssh üzerinden şifreli gidecektir, daha hızlı bir şekilde bilgisayardan bilgisayara disk kopyalamayı netcat komutu üzerinden de yapabilirsiniz. Burada unutmamanız gereken en önemli konu disklere dd işlemi sırasında erişim olmaması gereklidir. Diskler erişime kapatılabilir veya snapshot alarak bu işlemi yapabilirsiniz.


tar tape archiver - teyp arşivi

tar programının adı “teyp arşivleyicisi” anlamına gelir. Buna rağmen, verileri başka bir ortama arşivlemek için tar kullanabilirsiniz. Aslında, tarball’lar genellikle kaynak kodu dağıtırken olduğu gibi, birden çok dosyayı bilgisayarlar arasında tek adımda aktarmak için kullanılır. Tarball, tar ile oluşturulan ve genellikle gzip, xz veya bzip2 ile sıkıştırılan bir arşiv dosyasıdır.
Tar programı, birçok seçeneğe sahip sofistike bir yazılımdır. tar‘ı her çalıştırdığınızda, bir veya daha fazla parametre ile kullanırsınız.

Kullanım şekli:

tar [parametreler] hedefyol/tar_dosya_adı arşivlenecek_dosyalar

Parametreleri

c   Arşiv oluştur
x   Arşivi aç(çıkart)
t   Arşiv listesi
f   Arşiv dosyası adını belirtir
g   Artımlı şekilde yedekle
p   İzinleri koru
z   gzip sıkıştırması kullan
j   bzip2 sıkıştırması kullan
J   xz sıkıştırması kullan
v   Ayrıntı ver

/usr/include dizini altındaki dosyaları sıkıştıralım ve arşivleyelim

tar cvfz /tmp/usr-include.tgz /usr/include

/tmp klasörü içinde usr-include.tgz isimli bir dosya olduğunu görebilirsiniz

ls -la /tmp/usr-include.tgz
file /tmp/usr-include.tgz

şimdi dosyayı tmp klasörü altında açalım

cd /tmp
tar xvfz usr-include.tgz 

dosyanın aynı klasör altında /tmp/usr/include olarak açıldığını görebilirsiniz

tree /tmp/usr/
ls -la /tmp/usr/include

tar içeriğini listelemek ve arama yapmak

tar -ztvf usr-include.tgz
tar -tvf usr-include.tgz
tar -tvf usr-include.tgz 'aranacak-değer'

tar Komutu linux yöneten herkes için vazgeçilmezdir, çünkü klasörlerin altında dizinlerdeki haklar ve tam bir hiyerarşi ile yedekleme yapabilirsiniz. Aldığınız yedeği başka yerlere aynı şekilde açabilirsiniz. Zaman içinde, Linux ile daha fazla tecrübe kazandığınızda, dosyalar ve yetkileri ile ilgili kopyalamanın ne kadar önemli olduğunu anlayacaksınız. tar komutu MUTLAKA öğrenmeniz ve anlamanız gereken bir Linux komutudur.


cpio copy in, copy out - içeri kopyala, dışarı kopyala

Cpio programı tar programı gibi çalışır, fakat işleyişinde bazı farklar vardır. cpio, genel bir dosya arşivleme aracı ve bununla beraber bir dosya formatıdır. Adından da anlaşılacağı gibi, programın işleminde standart girdi ve standart çıktı “içeri ve dışarı kopyala” ifadesinden türetilmiştir. Basitçe, arşiv oluşturmak ve çıkarmak veya dosyaları bir yerden diğerine kopyalamak için bir araçtır.

Bir arşiv oluştururken, cpio işlenecek dosyaların listesini standart girdiden alır ve ardından arşivi standart çıktıya gönderir. Bu listeyi standart girdiye sağlamak için genellikle find veya ls kullanılır.

kullanım şekli:

cpio [-i veya -o veya -p] [parametreler]

Örnek kullanımlar:

/usr/include klasörü altındaki dosyaları(klasörler hariç) CPIO ile yedekleyelim

cd /usr/include
ls | cpio -oHnv > /tmp/usr-include-ls.cpio

-o seçeneği arşivi oluşturur ve -v seçeneği eklendikçe arşivlenen dosyaların adlarını yazdırır.(opsiyonel)-H arşiv formatı için (newc) parametrelerinden birini alır, “>” Cpio çıktısını “/tmp/usr-include-ls.cpio” dosyasına yönlendirir.

/usr/include klasörü altındaki tüm dosyaları tar arşivler(yedekler)

find /usr/include -depth -print | cpio -oHn > /tmp/usr-include-find.cpio

bu tür | pipe(yönlendirmeli) kullanım cpio komutu için oldukça sık tercih edilir.

/usr/include klasörünü sıkıştıralım

find /usr/include -depth -print | cpio -oHn | gzip > /tmp/usr-include-find.cpio.gz

Arşivlenmiş cpio dosyalarının açılması

cd /tmp
gunzip usr-include-find.cpio.gz
cpio -i < usr-include-find.cpio.gz

yada yukarıda belirttiğimiz işlemi bir seferde yapabiliriz.

cd /tmp
gunzip -c usr-include-find.cpio.gz|cpio -i

Sıkıştırma yazılımları gzip, gunzip, bzip2 ve xz

gzip .gz
Kullanımı:

gzip [DosyaAdi]
sonuç: DosyaAdi.gz
gzip, tek bir dosyayı sıkıştırmak için unix standardıdır. gzip genellikle tar ile birlikte kullanılır.

gunzip
Kullanımı:
gunzip [DosyaAdi.gz]

Dosya açma:
gzip -d DosyaAdi.gz veya gunzip DosyaAdi.gz

bzip2 .bz2
Kullanımı:

bzip2 [DosyaAdi]

Dosya açma:
bzip2 -d DosyaAdi.bz2 Tek bir dosyayı sıkıştırmak için gzip’e alternatif. Gzip’ten daha küçük dosya boyutu.

xz .xz
Kullanımı:

xz [DosyaAdi]

Dosya açma:
xz -d DosyaAdi.xz veya unxz DosyaAdi.xz Tek bir dosyayı sıkıştırmak için gzip’e alternatif. Dosya boyutu bzip2’den daha küçük. xz, 7-zip’ten türetilmiştir.

Linux101 - Bolum3

Linux101 - Ana Sayfa



Konu tekrarı, kısa sınav

seçeneklerden doğru olanları seçtikten sonra Gönder butonuna basınız. Sonuçları doğru ve yanlış görebilirsiniz.

Dosyaları tarihe göre ayrıntıları ile birlikte nasıl sıralayabiliriz? (listenin sonunda en eski tarih olacak)

  • ( ) ls -la
  • ( ) ls -latr
  • (x) ls -lt
  • ( ) ls -lSr

Hangi komut dosya içeriklerini gösterir?

  • (x) cat dosya.txt
  • ( ) touch dosya.txt
  • ( ) file dosya.txt
  • ( ) pwd dosya.txt

Bulunduğunuz dizini ağaç şeklinde 2 kademe derinlikte nasıl gösterebiliriz?

  • ( ) tree /usr -L 2
  • (x) tree . -L 2
  • ( ) tree . -2

Bilgisayarınızdaki tüm mp3 dosyalarını bulun ve 10M büyük olanları silin?

  • ( ) find . -name *.mp3 -size +10M -exec rm
  • (x) find / -name *.mp3 -size +10M -exec rm {} \;
  • ( ) find / -name *.mp3 -size +10M rm

test.sh akf senol gurubunu akf yaparak dosya erişimini sadece sahibi için çalıştırma izni verebilirmisiniz ?

  • ( ) chown akf:akf test.sh ve chmod 755 test.sh
  • (x) chown akf test.sh ve chgrp akf test.sh ve chmod 700 test.sh
  • ( ) chmod akf.akf test.sh ve chmod 007 test.sh