2-4 Linux kabuk erişimi dizin yapısı ve dosya yapıları
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.
-
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. - 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
- 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