BMS-301 Kabuk Programlama Güz 2015 (3. Sunu) (Yrd. Doç. Dr. Deniz Dal)
Sistem Klasörleri /boot:Çekirdek ile ilgili dosyalar. /bin:Sistem açılışı için gereken dosyalar. /sbin:Sistem yöneticisi için gereken kritik programlar. /lib:Sistem açılışı ve sistem için gereken kitaplıklar. /etc:Sistem ayar dosyaları. /usr:Paket dosyaları. /usr/bin:Programlar. /usr/lib:Kitaplıklar.
Editörler Editörler metin dosyalarının içeriğini değiştirmek maksatlı kullanılan uygulamalardır. X-Window pencere yöneticisinde çalışan editörler: – Kwrite, Kword, Kate, gedit – Writer (Libre Office Uygulaması) Komut satırı editörleri: – pico, nano, joe, vi(m)
Komut Satırı Editörü? Komut Satırı editörleri bir avantaj olarak herhangi bir X-Window pencere yöneticisine ihtiyaç duymazlar. Hızlı şekilde metin dosyası işlemi yapmak için uygundurlar. Uzaktaki makinelere ssh, rsh, telnet gibi hizmetlerle bağlanıldığında metin dosyalarını düzenlemek için idealdirler.
vi(m) vi editörü ilk kullanıcılar için korkutucu bir editör gibi görünür, ancak bir çok özelliği sayesinde çok fazla kullanıcısı vardır. Çok fazla komutu olsa da ilk kullanıcılar önce bunlardan bir kaçını kullanarak başlar ve daha sonra daha ayrıntılı olan komutları da kullanırlar. Komut satırından aşağıdaki gibi başlatılır ddal:$vi dosyaAdi
vi(m) vi editörü yeni bir dosya oluşturur. İmleç en üst sol köşede kendini gösterir. Her satırın başında bir tilda (~) oluşur. Tilda satırın boş olduğu anlamına gelir. En alt satır ise dosya hakkında bilgi veren satırdır. Köşeli parantezle [new file] dosya yeni bir dosya ise bunu belirtir.
vi(m) Alt satırda görülen bilgiler sırasıyla – Sol alt tarafta dosya adı, dosyanın kaç satırdan ve karakterden oluştuğu, – Sağ alt tarafta imlecin kaçıncı satırda ve kaçıncı sütunda olduğu görülmektedir.
vi(m) vi’ın en önemli farklılığı farklı modlarda çalışmasıyla ortaya çıkar. Bu modlardan normal (escape) mod hariç sol alt köşede mod ismi gözükür. – Escape mod-Normal mod – Insert Mod
Insert Mod (Esc+i) Bu mod metin üzerinde değişiklikler yaparken basit bir editör gibi karakter yazılan moddur. Bu moda girdiğinizi sol alt köşedeki --INSERT-- ibaresinden anlayabilirsiniz. Çıkmak için Esc tuşu kullanılır.
Escape Mod - Normal Mod vi ilk bu modda açılır. Bu moda özgü kısayolların ve komutların çalıştırıldığı moddur. Escape mod denmesinin sebebi diğer modlardayken Esc tuşuyla bu moda dönülebilmesidir.
Escape Mod - Normal Mod Bu modda yapılan başlıca işlemler – Dosyadaki değişiklikleri kaydetmek (:w) – Değişiklikleri kaydederek çıkmak (:wq) – Değişiklikleri kaydetmeden çıkmak (:q!) – İmlecin bulunduğu satırı kopyalamak (yy) – Kopyalanan karakter dizisini yapıştırmak (p)
Escape Mod - Kelime Arama – / kelime: İmlecin bulunduğu yerden itibaren istenilen kelimeyi arar. – ? kelime: İmlecin bulunduğu yerden itibaren geriye doğru kelimeyi arar. Kelimeyi aradıktan sonra aynı kelimenin geçtiği bir sonraki yeri bulmak için: – n:Aynı yönde kelimeyi arar – N:Zıt yönde kelimeyi arar – / :Aramayı ileriye doğru tekrarlar – ? :Aramayı geriye doğru tekrarlar
ESC Mod – Belirtilen Satıra Gitme – Dosya içerisindeki satırlar ard arda numaralandırılırlar. – İmleci istenilen satıra hareket ettirebilirsiniz. – Satır numaralarını göstermek için: :set nu – Satır numaralarını kapatmak için: :set nonu – Ctrl+G ile ekranın alt tarafında bulunulan satır ve dosya hakkında bilgi alabilirsiniz.
vi Başlangıç Seçenekleri Basitçe dosya açma: vi dosyaAdi İmleci belirtilen satırda konumlandırarak dosya açma: vi +satirno dosya satirno seçeneği boş bırakılırsa dosyayı son satırdan açar. Dosyayı istenilen kelimenin geçtiği ilk yerden açma : vi +/kelime dosya
Dosyaları Kaydetme ve Çıkma vi ile değişiklik yapmış olduğunuz dosyaların tamamını ya da bir kısmını kaydetmek mümkündür: :w Kaydet ama çıkma. :q Çık. :wq Kaydet ve çık (eğer dosyada herhangi bir değişiklik olmadıysa da kaydet). :x Eğer dosyada herhangi bir değişiklik olduysa kaydet ve çık, aksi durumda sadece çık.
Erişim Hakkı – Güvenlik Linux ve Unix işletim sistemlerinde dosya sistemindeki kısıtlamalar önemli bir güvenlik mekanizmasıdır. Bu mekanizma kötü niyetli kullanıcıların ya da acemi kullanıcıların yanlışlıkla sisteme zarar vermelerini engeller.
Erişim Hakkı Nelere Uygulanır? Erişim hakları sistemdeki bütün dosya ve dizinler için geçerlidir. Bunları 3 farklı dosya grubuna ayırabiliriz: – Sistem Komutları (ifconfig, ls,...) – Sistem Konfigurasyon Dosyaları (/etc/passwd,/etc/shadow..) – Kullanıcı Dosyaları (Ev dizinleri)
Nerede Bu Erişim hakları? Sistemdeki tüm dosya ve dizinlerin erişim hakkı politikasına sahip olduğunu biliyoruz. ls -l komutunun çıktısı dosya ve dizinlerin erişim haklarını ve sahiplerini vermektedir. drwxr-xr-x 2 gursoy users :52 singlecikti/ -rwxr-xr-x 1 gursoy users :51 son.tex* Erişim Hakları Dosya sahibinin Kullanıcı ve grup isimleri
(-rwxr-xr-x) Bu da Ne? Az önce bahsedilen kullanıcı ve grup tanımlarını gözünüzün önüne getirin. Bir dosya veya dizin için erişim hakkı belirlenirken 3 farklı grup için farklı haklar tanımlanmaktadır. rwx Kullanıcı (u) (User) r-x Grup (g) (Group) r-x Diğerleri (o) (Other) -
Kimdir Bu 3 grup? Bu gruplar aşağıdaki gibi tanımlanır 1)Dosya sahibi olan kullanıcı (user): İlk olarak dosya sahibinin dosya üzerindeki hakları tanımlanır. 2)Dosya sahibinin üye olduğu grup (group): Dosya sahibinin üye olduğu gruptaki diğer kullanıcıların dosya üzerindeki hakları tanımlanır. 3)Bunların haricindeki kullanıcılar (other)
Read(r)-Write(w)-Execute(x) -rwx r-x r-x Her grubun erişim haklarını 3 harfin kombinasyonları belirler. – r : Okuma hakkı (Read) – w : Yazma hakkı (Write) – x : Çalıştırma hakkı (Execute) KullanıcıGrupDiğer
Okuma Hakkı (Read-r) Bir dosyanın okuma hakkı olması “içeriğinin görüntülenmesine ve kopyalanmasına izin verilmesi” anlamına gelmektedir. Bir dizinin okuma hakkı olması “sadece dizinin kopyalanmasına izin verilmesi” anlamına gelmektedir.
Yazma Hakkı (Write-w) Bir dosyanın yazma hakkı olması “içeriğinin değiştirilebilmesi ve silinebilmesine izin verilmesi” anlamına gelmektedir. Bir dizinin “içeriğinin değiştirilebilmesi ve silinebilmesine izin verilmesi” için yazma ve çalıştırma (execute) haklarının olması gerekmektedir.
Çalıştırma Hakkı (Execute-x) Bir dosyanın çalıştırma hakkı olması o dosyanın çalıştırılabileceği manasına gelir. Çalıştırılabilir (binary) dosyalar ve betikler (script) açısından önemlidir. Bir dizinin çalıştırma hakkı olması demek o dizine girilebilme, içeriğinin listelenebilmesi ve diğer dosya işlemlerinin yapılabileceği manasına gelir.
Kombinasyonlar drwxr-xr-x: Bu dizinin sahibi okuma, yazma ve içinde çalışabilme haklarına sahipken, grup üyeleri ve diğerleri sadece okuma ve içinde çalışabilme hakkına sahiptir. -rw-r--r--: Bu dosyaya sahibinin okuma ve yazma hakkı varken çalıştırma hakkı yoktur. Grup üyeleri ve diğerlerinin sadece okuma hakkı vardır. -rwx------: Bu dosyada sahibinin okuma,yazma ve çalıştırma hakkı varken, grup üyelerinin ve diğerlerinin hiç bir hakkı yoktur.
Erişim Hakkını Kim Belirler? Dosya ve dizinlerin erişim haklarını dosya ve dizin sahipleri ile sistemin root kullanıcısı değiştirebilir. Erişim hakları 2 farklı şekilde değiştirilebilir: – X-window içerisinde arayüz (GUI) kullanarak – chmod komutuyla komut satırından
chmod Komutu chmod komutu erişim haklarını değiştirirken 2 farklı şekilde argüman alabilir: 1) r, w, x haklarının sayısal değerlerini kullanarak 2) user(u), group(g), other(o), all(a) kısaltmalarına + ve – işaretleri ile r, w, x haklarını ekleyip çıkararak chmod haklarınTanimi dosyaAdi
chmod Komutu r, w, x haklarının sayısal değerleri kullanımı aşağıdaki gibidir. – r = 4w = 2x = 1 – rwx gibi bir erişim hakkı sağlanmak isteniyorsa rwx=4+2+1=7, ---=0+0+0=0, ---=0+0+0=0 chmod 700 deneme.txt
Nümerik Değerler Erişim haklarının nümerik değerleri aşağıdaki gibidir. 7 =rwx 6=rw- 5=r-x 4=r-- 3=-wx 2=-w- 1 =--x 0=---
chmod Örnekleri -rw-r--r-- 1 root root 0 Jan 9 22:43 deneme.txt silivri:~/temp # chmod 700 deneme.txt silivri:~/temp # ls -l total 12 drwxr-xr-x 2 root root 4096 Jan 9 22:43. drwx root root 8192 Jan 9 22:35.. -rwx root root 0 Jan 9 22:43 deneme.txt
chmod Örnekleri rwxr-xr-- gibi bir erişim hakkı sağlanmak istenirse rwx=4+2+1=7 r-x=4+0+1=5 r--=4+0+0=4 chmod 754 deneme.txt
chmod Örnekleri -rwx root root 0 Jan 9 22:43 deneme.txt silivri:~/temp # chmod 754 deneme.txt silivri:~/temp # ls -l total 12 drwxr-xr-x 2 root root 4096 Jan 9 22:43. drwx root root 8192 Jan 9 22:35.. -rwxr-xr-- 1 root root 0 Jan 9 22:43 deneme.txt
chmod Kullanımı chmod komutunun 2. kullanımı ise – user(u) – group(g) – other(o) – all(a) kısaltmalarına =, + ve – işaretleri ile r, w, x haklarını eşitleyerek, ekleyip ve çıkararak
chmod Kullanımı Örneğin kullanıcının (user) çalıştırma (execute-x) hakkını kaldırmak istersek chmod u-x dosyaAdi Gruba okuma hakkı eklemek istersek chmod g+r dosyaAdi Herkese okuma ve yazma hakkı vermek istersek chmod a+rw dosyaAdi Grubun haklarını okuma ve çalıştırma yapmak istersek chmod g=rw dosyaAdi
chmod Örnekleri -rwxr-xr-- 1 root root 0 Jan 9 22:43 deneme.txt silivri:~/temp # chmod u-x deneme.txt silivri:~/temp # ls -l total 12 drwxr-xr-x 2 root root 4096 Jan 9 22:43. drwx root root 8192 Jan 9 22:35.. -rw-r-xr-- 1 root root 0 Jan 9 22:43 deneme.txt
chmod Örnekleri -r--r--r-- 1 root root 0 Jan 9 22:43 deneme.txt silivri:~/temp # chmod a+x deneme.txt silivri:~/temp # ls -l total 12 drwxr-xr-x 2 root root 4096 Jan 9 22:43./ drwx root root 8192 Jan 9 22:35../ -r-xr-xr-x 1 root root 0 Jan 9 22:43 deneme.txt
Dosya Sahibi Nasıl değişir? drwxr-xr-x 2 gursoy users :52 singlecikti/ ls -l çıktısında da gördüğümüz dosya veya dizinin sahibi ve grubu 2 şekilde değiştirilebilir. 1) Arayüz yardımıyla 2) chown komutuyla komut satırından
chown (change owner) Komutu chown komutu dosya veya dizinin sahibini ve grubunu değiştirmek için kullanılır. Bir dosyanın sahibini sahibin kendisi ve root değiştirebilir. – Kullanımı chown kullaniciAdi.kullaniciGrubu dosyaAdi chown kullanıcıNo.grupNo dosyaAdi örneğin; chown test.users deneme.txt chown deneme.txt
chown Kullanımı -r-xr-xr-x 1 root root 0 Jan 9 22:43 deneme.txt silivri:~/temp # chown test.users deneme.txt silivri:~/temp # ls -l total 12 drwxr-xr-x 2 root root 4096 Jan 9 22:43./ drwx root root 8192 Jan 9 22:35../ -r-xr-xr-x 1 test users 0 Jan 9 22:43 deneme.txt