Erişim Hakları

 

Bir dosyaya erişmek demek, o dosya üzerinde dosya işlemlerini yapmak demektir. Dosya işlemlerini okuma, yazma ve çalıştırma (execute) diye üç ayrı eylemle belirteceğiz.

Okuma hakkı, bir dosyayı okumak yetkisidir. Yazma hakkı, bir dosyayı yaratmak ve istendiğinde dosyayı değiştirmek ya da silmek yetkisidir. Execute (çalıştırma) hakkı, bir dosyayı çalıştırma, kullanma yetkisidir.

Unix çok kullanıcılı bir sistem olsuğ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 eğ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.

Unix’in, DOS gibi tek kullanıcılı sistemlerden farklı olan, bu özeliğini ayrıntılarıyla bilmeliyiz.

 

Chmod

Dosya ve dizinlerin erişim haklarını koyan ve bu hakları değiştiren komuttur. Bir dosya ya da dizinin erişim hakkını ancak dosyanın sahibi (owner) ya da üst kullanıcı (superuser) değiştirebilir.

 

Unix Kullanıcıları

Unix üç türlü kullanıcı tanımlar:

u     user              [dosya sahibi, dosya yaratıcısı]
g     group             [dosyanın ait olduğu grup]
o     other             [ötekiler, u ve g dışında olup, dosyaya erişebilenler]
a     all (ugo)             [ hepsi]

 

Erişim İzinleri (Permissions)

İzinler üç harfle belirtilir: rwx. Bu harflerin anlamları şöyledir:

r      read       [okuma ]
w      write       [yazma]
x      execute       [çalıştırma]

Bir dizindeki dosyaları ayrıntılarıyla listelemek için ls –l  komutunun verildiğini söylemiştik. Bu komuttan sonra, ekranda her dosya için yazılan satırın başında 10 karekterlik bir dizim açılır. Bitişik olarak yazılan bu 10 karekterlik dizim, soldan sağa doğru 1-3-3-3 karekterlik dört kısma ayrılır. Her kısım, listelenen dosya ya da dizin ile ilgili ayrı ayrı bilgiler verir. Bu bilgiler şunlardır:

 

            Tür            sahibi            grup            ötekiler

            (Type)            (user)            (group)            (other)

            -             - - -             - - -     - - -

İlk karekter tür belirtir. Tür hanesine aşağıdaki karekterlerden birisi gelir ve karşısında belirtilen türden olduğunu bildirir:

-   Normal dosya

d   Dizin

b   Özel blok dosyası

c   Özel karekter dosyası

l    Sembolik bağlantı

P   Özel adlandırılmış pipe dosyası

 

İlk karekterden sonra gelen üçer karekterden oluşan üç blok, soldan sağa doğru user, group ve other için verilen izinleri gösterir. Bu izinler daima

            rwx

sırasında yazılır. Bu üç harften birisi yerine  (-)  simgesi konulursa, o iznin verilmediği anlamına gelir.

 

Örnekler:

            rwx            Okuma, yazma ve çalıştırma izinleri var

            rw-            Okuma ve yazma izni var, çalıştırma izni yok

            r-x            Okuma ve çalıştırma izni var, yazma izni yok

            -wx            Okuma izni yok, yazma ve çalıştırma izni var

            r--            Yalnız okuma izni var

            -w-            Yalnız yazma izni var

            --x            Yalnız çalıştırma izni var

            ---            Hiçbir izin yok 

 

Buna göre, örneğin,           

drwxrwxrwx     

ifadesinde d harfi listelenenin bir dizin olduğunu söyler. Geriye kalanlar ise u, g, o için rwx izinlerinin hepsinin verildiğini belirtir.

 

-rwxr-x--x

ifadesinde ilk (-) karekteri, listelenenin normal bir dosya olduğunu; sonra gelen rwx dizimi user’e okuma yazma ve çalıştırma izinlerinin verildiğini; sonra gelen r-x dizimi gruba okuma ve çalıştırma izinlerinin verildiğini ama yazma izni verilmediğini; en sondaki --x dizimi ise ötekilere (other) okuma ve yazma izni verilmediğini, yalnızca çalıştırma izni verildiğini belirtir.  

 

Erişim Kiplerinin (mod) Octal Gösterimi

Yukarıda belirtildiği gibi, dosya erişim hakları harflerle belirlenebildiği gibi, octal sayıtlama ( 8-li sayıtlama) sistemiyle de belirlenebilir. 0..7  octal sayaklarını 2-li sayıtlama sisteminde ifade edersek şu tabloyu oluşturabiliriz.

 

2-li Temsil

Octal Sayı

r

w

x

Sembolic Form

000

0

hayır

hayır

hatır

---

001

1

hayır

hayır

evet

--x

010

2

hayır

evet

hayır

-w-

011

3

hayır

evet

evet

-rw

100

4

evet

hayır

hayır

r--

101

5

evet

hayır

evet

r-x

110

6

evet

evet

hayır

rw-

111

7

evet

evet

evet

rwx

 

Bu tablonun en solundaki sütün ile en sağındaki sütünu satır satır birbirine eşleyerek, rwx izinlerini kolayca belirleyebiliriz. Örneğin, 101 ikili sayısı 5 octal sayısına ve  r-x erişim iznine karşılık gelmektedir. Sol sütundaki ikili sistemde  4 ler hanesi sağ sütundaki r iznine, 2 ler hanesi w iznine ve 1 ler hanesi x iznine karşılıktır. İkili sayıtlama sisteminde 0 lar iznin verilmediği, 1 ler ise iznin verildiği anlamındadır. rwx simgesinde 0 ‘a karşılık olan harf yerine (-) simgesi konulmaktadır.

Öte yandan, sol sütundaki her ikili sayı ikinci sütundaki octal sayı ile temsil edilebilir. İkili sayılarla octal sayılar bire bir eşlenmiştir. Bundan yararlanarak, her satırdaki izni, ona karşılık gelen octal sayı ile tek olarak belirlemek mümkündür. Örneğin,

            101             5            r-x

simgelerinin her üçü de aynı izni belirtirler. Bundan yararlanarak, ugo kullanıcılarının izinlerini yan yana yazacağımız üç octal sayı ile belirtebiliriz. Örneğin,

            751            rwxr-x--x

simgeleri aynı anlamı taşıyor olacaklardır. Dolayısıyla, 751 dizimi u ya rwx iznini, g ye r-x iznini ve o ya --x iznini veriyor olacaktır.

Chmod

Dosya ve dizinlerin erişim haklarını koyan ve bu hakları değiştiren komuttur. Bir dosya ya da dizinin erişim hakkını ancak dosyanın sahibi (owner) ya da üst kullanıcı (superuser) değiştirebilir.

 

Operatorler

-                    İzin kaldır (remove permission )

+           İzin ekle (add permission) 

=           İzin koy (set permission)

 

Örnekler

Bir dosya ya da dizinin erişim hakları octal kodlarla ya da ugo ve rwx simgeleriyle verilebilir. Octal kodlar kullanılarak verilen izne, mutlak izin verme (absolute permission) denir. Simgeler kullanılırsa göreceli izin verme (relative permission) denir. Her ikisini de kullanabiliriz. Ama, octal kodları biliyorsak, mutlak izin verme yöntemi daha kolaydır. Bunu değişik örnekler üzerinde açıklayalım.

1.            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

komutlarını vermek gerekirdi.

2.            mektup.txt dosyasının bütün erişim haklarını kaldırmak için

$ chmod 000 mektup.txt

komutunu vermek yeterlidir. Aynı işi,

      $ chmod ugo –rwx mektup.txt

komutuyla da yapabiliriz.

 

3.                  programlar adlı dizinden g ve o nun okuma ve yazma izinlerini kaldırmak için,

$ chmod go –rw  programlar

komutunu vermek yeterlidir. Aynı işi,

$ chmod 711 programlar

komutuyla da yapabiliriz.

 

4.                  Yeni Unix sistemleri, bir dizin içindeki bütün dosya ve alt dizinlerin erişim haklarını topluca belirlemeye izin verir. Bunun için –R (recursive) nitelemesi kullanılır. Örneğin,

$ chmod –R u+r programlar

komutu, bu dizin içindeki bütün dosya ve alt dizinler için u ya okuma izni verir.

 

5.         Bir dizin için yalnız okuma iznine sahip bir kullanıcı, ls komutu ile o dizinin içindeki dosya ve alt dizinleri listeleyebilir. Ama o dosyaları okuyamaz, çalıştıramaz, değiştiremez ve silemez.

 

6.            deneme.txt adlı dosyada grup üyelerinin bütün erişim haklarını yoketmek için

$ chmod g –rwx deneme.txt

komutu verilir.

 

7.            deneme.txt adlı dosyada bütün kullanıcılara bütün erişim haklarını vermek için   

$ chmod a +rwx deneme.txt

komutu verilir. Aynı işi

$ chmod 777 deneme.txt

komutu ile de yapabiliriz.

 

8.                  Joker  (*)  simgesi kullanılarak bir grup dosya ya da dizine erişim hakkı verilebilir.

$ chmod go +r pr*

komutu, g ve o ya pr ile başlayan bütün dosya ve dizinler için okuma izni verir. [ Joker (*) gizli dosyaları dahil etmez.]

 

9.                  Bir dizindeki bütün dosyalara g ve o nun erişim haklarını kaldırmak için

$ chmod og –rwx *

komutu verilir. Aynı işi

$ chmod 700 *

komutuyla da yapabiliriz.

 

Başka İzinler

Yukarıda açıkladığımız rwx erişim hakları yerine  l, s, t harfleri gelebilir. uid (user ID) ya da gid (group ID) nin konulmuş olması halinde  x yerine  s gelir. Bir dosya açıldığında, başka kullanıcıların onu açamaması için l izni verilir. Bu izin r, w ya da x yerine getirilebilir. Bu tür izinler, programcılar için gereklidir; normal kullanıcılar buna gerekseme duymazlar. Bunların nasıl belirlendiğini görmek için, Unix Kılavuzuna bakınız.


l        set locking privilege          [kitleme hakkını belirleme]
s        set user or group ID mode          [kullanıcı ya da grup kimliği kipini belirleme]
t        set save text (sticki bit) mode          [kaydedilen text kipini belirleme ]
u       user's current permissions          [kullanıcının izni]
g       group's current permissions          [grubun izni]
o       other's current permissions         [ötekilerin izni]