Dosya ve klasör erişim izinleri
Okuma izni, bir dosyayı okuma yetkisidir. Yazma izni, bir dosyayı yaratmak ve istendiğinde dosyayı değiştirmek ya da silme yetkisidir. Çalıştırma (execute) izni, bir dosyayı çalıştırma, kullanma yetkisidir.
*nix çok kullanıcılı bir sistem olduğu için, her kullanıcı ancak kendisine erişim izni verilen dosyalara erişebilir ve dosya ile ilgili olarak yapabileceği işler, kendisine verilen erişim hakkıyla sınırlıdır. Böyle olmasaydı, bir kullanıcı başka bir kullanıcının dosyalarını okuyabilir, üzerinde istenmeyen değişiklikler yapabilir ve hatta silebilirdi.
Bir dizin (directory) için okuma hakkı, o dizinin içindekileri listeleme yetkisidir.Yazma hakkı, o dizinde yeni dosyalar ve alt dizinler yaratma ve silme hakkıdır. Execute hakkı ise, cd komutunu kullanarak dizine girme ve bu dizini yol (path) olarak kullanma yetkisidir.
Chmod
CHMOD dosya ve dizinlerin erişim izinlerini belirleyen ve bu izinleri değiştiren yazılımdır. Bir dosya ya da dizinin erişim izinlerini ancak dosyanın sahibi (owner) ya da üst kullanıcı (superuser) değiştirebilir.
Linux sistemlerde kullanıcıların dosyalara erişim haklarını belirlemek için “chmod” komutu kullanılınır. Chmod un tam karşılığı “change mod” dur.
Linux’ta 3 kullanıcı türü bulunmaktadır.
u – user (dosya veya dizin sahibi, yaratıcısı)
g – group (dosya veya dizinin ait olduğu grup)
o – other (diğerleri, user ve group haricindekiler)
a – all (ugo- user,group, other) (hepsi, herkes dosya ve dizinlere erişebilir.)
Chmod izinleri ( Chmod Permissions )
Chmod erişim izinleri herzaman rwx şeklinde sıralanmaktadır.
r – Okuma izni ( Read permission )
w – Yazma izni ( Write permission )
x – Çalıştırma izni ( Execute permission )
Bir dizin yada dosyadaki chmod izinlerini görmek için “ls -all” komutunu kullanırız.
ls -all
drwxr-x---+ 51 oz staff 1632 13 Şub 16:39 .
drwxr-xr-x 5 root admin 160 27 Oca 03:42 ..
-r-------- 1 oz staff 9 6 Oca 15:55 .CFUserTextEncoding
-rw-r--r--@ 1 oz staff 12292 10 Sub 15:14 .DS_Store
drwxr-xr-x@ 5 oz staff 160 13 Oca 20:48 .IdentityService
drwx------+ 17 oz staff 160 13 Şub 16:15 .Trash
drxwr-xr-@ 3 oz staff 96 13 Oca 20:48 .android
drwx------ 3 oz staff 96 2 Şub 11:03 .cups
Örneklerini inceleyelim
İlk karakter dosyanın türünü göstermektedir.
Tür | Sahibi | Grup | Diğerleri
(Type) | (user) | (group) | (other)
- - - | – - – | – - – - | – - -
Dosya tür çeşitlerini şu şekilde sıralayabiliriz :
* Normal bir dosya
d Dizin
b Özel blok dosyası
c Özel karakter dosyası
l Sembolik bağlantı dosyası
P Özel isimlendirilmiş pipe dosyası
Bazı chmod örnekleri :
- rwx : Okuma, yazma ve çalıştırma erişim izinlerinin hepsi var.
- rw- : Okuma ve yazma izinleri var, çalıştırma için izin yok.
- r-x : Okuma ve çalıştırma izinleri var, yazma için izin yok.
- -wx : Okuma için izin yok, yazma ve çalıştırma izinleri var.
- r– : Sadece okuma hakkı var.
- -w- : Sadece yazma hakkı var.
- –x : Sadece çalıştırma hakkı var.
- — : Hiçbir erişim hakkı yok.
drwxr-x---+ 51 oz staff 1632 13 Şub 16:39 .
drwxr-xr-x 5 root admin 160 27 Oca 03:42 ..
-r-------- 1 oz staff 9 6 Oca 15:55 .CFUserTextEncoding
-rw-r--r--@ 1 oz staff 12292 10 Sub 15:14 .DS_Store
drwxr-xr-x@ 5 oz staff 160 13 Oca 20:48 .IdentityService
drwx------+ 17 oz staff 160 13 Şub 16:15 .Trash
drxwr-xr-@ 3 oz staff 96 13 Oca 20:48 .android
drwx------ 3 oz staff 96 2 Şub 11:03 .cups
Yukardaki örneği incelersek;
ilk karakterden sonra 3 blok halinde gelen soldan sağa doğru user, group ve other olarak sıralayabiliriz. Erişim izinleri herzaman rwx şeklinde verilir eğer rwx yerine “-” işareti varsa o bölüme gelen yerde izin verilmemiş demektir.
drwxr-xr-x 5 root admin 160 27 Oca 03:42 ..
Örneğini inceleyelim,
d nin anlamı bunun bir directory yani dizin olduğu anlamındadır. D den sonra gelen “rwxr” nin anlamıda, root kullanıcısının bu dizin üzerinde okuma (r) , yazma (w), çalıştırma (x)(execute) haklarının hepsinin verildiğidir.
“xr” de root group una üye olan kullanıcıların bu dizin üzerinde x (çalıştırma) ve okama(r) haklarının verildiğidir.
“x” in anlamıda bu dizinde diğer kullanıcıların sadece çalıştırma (x) yetkileri vardır.
Bu örnek root (yönetici) kullanıcısının yapabildiklerine ait bir örnek idi. Şimdide sadece kullanıcı olan birinin klasöründe nasıl bir yetkilendirme verilmiş onu inceleyelim.
drwx------ 3 oz staff 96 2 Şub 11:03 .cups
Bu örnekte gördüğünüz gibi sadece oz kullanıcısının staff klasörüne olan izinleri görebiliyorsunuz. Gördüğünüz gibi sadece user kullanıcısına okuma (r), yazma(w) ve çalıştırma (x) yetkileri verilmiş onun dışında ne oz gurubuna üye olan nede diğerlerine herhangi bir hak atanmamış. Bunun anlamı oz gurubuna üye olsanız bile bu klasöre hiç bir şekilde giriş yapamazsınız.
Kısaca toparlamak gerekirse,
- drwxrwxrwx : Şeklinde listelenen, d ( dizin ) türünde u, g, o (user, group, other kullanıcılarına) rwx (okuma, yazma, çalıştırma) erişim izinlerinin tümü verilmiş.
- -r–r–r– : Şeklinde listelenen, normal bir dosya türünde her kullanıcıya sadece r (okuma) erişim izni verilmiş.
- -rw-r–r– : Şeklinde listelenen, normal bir dosya türünde sahibine rw (okuma yazma) hakkı verilerek grup ve diğer kullanıcılara sadece r (okuma) erişim izni verilmiş.
Chmod izinleri yukarıda anlattığım gibi harflerle olabileceği gibi rakamlarlada olabilir.
r ( Okuma izni ) = 4
w ( Yazma izni ) = 2
x ( Çalıştırma izni ) = 1
000 : r (Okuma hakkı yok), w (Yazma hakkı yok), x (Çalıştırma hakkı yok) :- – : chmod değeri 0
001 : r (Okuma hakkı yok), w (Yazma hakkı yok), x (Çalıştırma hakkı var) – -x : chmod değeri 1
010 : r (Okuma hakkı yok), w (Yazma hakkı var), x (Çalıştırma hakkı yok) -w- : chmod değeri 2
011 : r (Okuma hakkı yok), w (Yazma hakkı var), x (Çalıştırma hakkı var) -wx : chmod değeri 3
100 : r (Okuma hakkı var), w (Yazma hakkı yok), x (Çalıştırma hakkı yok) r- – : chmod değeri 4
gibi.
Rakam olayını birkaç örnekle açıklamak isterim.
Deneme.html dosyası için kullanıcıya (dosya sahibi) rwx, grup üyelerine r-x ve ötekilere (other) –x erişim haklarını vermek için
$ chmod 751 deneme.html
komutunu vermek yeterlidir. Oysa bunu sembollerle yapmak isteseydik
$ chmod u + rwx
$ chmod g +r-x
$ chmod o +--x
Aşağıdaki örnekte deneme klasöründeki bütün yazma ve çalıştırma izinlerini kaldırdık.
drwxrwxr-x. 2 oz staff 4096 2009-10-10 22:36 deneme
$ chmod -wx deneme
$ ls -all
dr--r--r--. 2 oz staff 4096 2009-10-10 22:36 deneme
Aşağıdaki örnekte de kullanıcının okuma ve yazma haklarını saklı tutarak çalıştırma hakkını kaldırdık. Ayrıca group ve diğerlerininde çalıştırma, yazma ve okuma haklarınıda kaldırmış olduk.
drwxrwxr-x. 2 oz staff 4096 2009-10-10 22:36 deneme
$ chmod u=rw,go= deneme
drw-------. 2 oz staff 4096 2009-10-10 22:36 deneme
Bu örnekte mektup.txt dosyasının bütün erişim haklarını kaldırmak için
$ chmod 000 mektup.txt
programlar adlı dizinden g ve o nun okuma ve yazma izinlerini kaldırmak için,
$ chmod 711 programlar
komutunu vermek yeterlidir. Aynı işi bu komutla da yapabiliriz
$ chmod go –rw programlar
deneme.txt adlı dosyada bütün kullanıcılara bütün erişim haklarını vermek için
$ chmod 777 deneme.txt
komutu verilir. Aynı işi komutu da yapar.
$ chmod a +rwx deneme.txt
Chmod izinleri için Operatörler
– İzinleri kaldır ( remove chmod permission )
+ İzinleri ekle ( add chmod permission )
= İzinleri koy ( set chmod permission )
Bazı chmod örnekleri :
- chmod +r deneme : deneme dosyasına okuma(r) izni vermiş olduk.
- chmod u=rw,go= deneme : Dosya sahibine okuma ve yazma izni verdik. Grup ve diğerleri için tüm erişim izinlerini kaldırdık.
- chmod –R u+r deneme: deneme isimli dizin altındaki tüm dosyalar ve dizinler için kullanıcısına okuma izni verdik. -R (recursive) parametresi ile ilgili dizin altındaki tüm dosyalar ve dizinlerin chmod erişim izni aynı şekilde değiştirilir.
- chmod a+rwx ve chmod 777 deneme : İki farklı komut fakat işlevleri aynı. Tüm kullanıcıların ilgili dosya üzerinde okuma, yazma ve çalıştırma haklarının olmasını sağlar.
- chmod +rw dosya ismi : Komutu veren user için okuma ve yazma izni grup ve diğerleri için sadece okuma izinlerini verdik.
- chmod 0 deneme: Dosya için tüm kullanıcılara ait erişim izinlerini kaldırdık.
- chmod 666 deneme : Tüm kullanıcılar için okuma ve yazma izni verdik.
- chmod ugo-rwx dosyaismi : Dosyanın tüm erişim izinlerini kaldırmış olduk. chmod 0 veya chmod 000 da aynı görevi görür.
- chmod go-rw deneme : Grup ve diğer kullanıcıların dosya üzerindeki okuma ve yazma hakkını kaldırdık.
- chmod –R u+r deneme: deneme isimli dizin altındaki tüm dosyalar ve dizinler için kullanıcısına okuma izni verdik. -R (recursive) parametresi ile ilgili dizin altındaki tüm dosyalar ve dizinlerin chmod erişim izni aynı şekilde değiştirilir.
- chmod 0755 veya chmod 755 dosya_ismi : Bu komutun iki farklı şekilde yazılmış olması önemli değildir. Yaptığı görev aynıdır dosya sahibine okuma, yazma ve çalıştırma haklarını verirken grup ve diğerleri için de okuma ve çalıştırma hakkı vermektedir.
- chmod +x dosya ismi : Dosyaya tüm kullanıcılar (user,group,other) için çalıştırma izni verdik.
- chmod go+r deneme* : ( * ) joker parametresi ile deneme ile başlayan tüm dosyaların grup ve diğer(other) userler tarafından okunması iznini verir.