Linux Yetkilendirmeler (Linux Permissions)
Hepimiz Linux kullanırken permission denied gibi hatalar almışızdır. Bu tür hataları çözmek veya hataya baştan düşmemek için Linux’un kullanıcı, grup, sahiplik (owner) ve file mode kavramlarını iyi anlamalıyız. Bu yazımızda dosya modu (file mode) kavramı ve chmod ile file mode nasıl düzenlenir onu ele alacağız. Sonrasında örnekler yapacağız.
Linux dünyasında bir kullanıcı bir dosya veya dizine sahip olabilir. Bu durumda, kullanıcının bu dosya ve dizine erişimi kontrol yetkisi olur.
id
: Kullanıcının kimliğini gösterir.
erkan@vm:~\$ id uid=1000(erkan) gid=1000(erkan) groups=1000(erkan), 4(adm), 24(cdrom), 27(sudo), 30(dip), 46(plugdev), 113(lpadmin), 128(sambashare)
Linux’da user ve group ile ilgili işlemler sırasıyla /etc/passwd
ve /etc/group
dosyalarının güncellenmesiyle yapılır. Hatırlayalım Linux’da herşey metinden ibaret.
Her dosyanın yetkisi 10 karakterden oluşan bir dizi ile belirlenir.
erkan@vm:~\$ ls -l /etc/passwd -rw-r--r-- 1 root root 2240 Tem 31 14:39 /etc/passwd
Şu rwx- Şeklinde Görülen Anlaşılmaz İşaretler
ls -l komutuyla dizin listelediğimizde satır başında her dosya veya dizine ait -rxw-r- vb. işaretlemeler görmüşsünüzdür. İşte bu işaretleri daha iyi anlamak adına aşağıdaki şekli oluşturdum. Yukarıdaki 10 karakter dosya/dizin erişim yetkileri özelliklerini belirtir ve aşağıdaki şekilde gösterildiği gibi dört gruba ayrılır.
Bir dosya veya dizine üç çeşit erişim yetkisi belirlenmiştir: okuma (r), yazma (w) ve çalıştırma (x)
İlk karakter dosya türünü diğer 9 karakter ise erişim modunu belirtir. İlk karakteri çıktıktıktan sonra kalanları üçerli gruplar olarak algılamaya çalışırsak çok daha kolay anlaşılacaktır. İlk üçlü sahibinin, ikinci üçlü grubun, son üçlü ise bunların haricindeki herkesin erişim yetkilerini düzenliyor.
İlk karakter olan dosya türü çeşitleri şöyledir:
– : Regular file
d : Dizin
l : Sembolik link
c : Karakter özgü dosya
b : blok özgü dosya
Üçerli gruplar halinde olmak üzere kalan dokuz karakterin erişim modu özellikleri ve anlamı:
r : Dosyayı aç ve okur. Dizinleri açar ve içindekileri görür.
w : Doayayı açar değiştirir. İsmini değiştiremez. Dosyayı silemez.
x: Bir dosyaya program gibi çalışma yetkisi verir.
Örnekler:
-rwx------
: Normal dosya. Sahibi tarafından okunabilir, yazılabilir ve çalıştırılabilir. Onun dışında hiç kimse birşey yapamaz.
-rw-------
: Normal dosya. Sahibi tarafından okunabilir, içeriği değiştirilebilir. Onun dışında hiç kimse birşey yapamaz.
-rw-r--r--
: Normal dosya. Sahibi tarafından okunabilir, içeriği değiştirilebilir. Bu dosyaya sahip olan grup üyeleri okuyabilir. Kalan herkes okuyabilir.
drwxrw-r--
: Dizin. Sahibi tarafından okunabilir, yazılabilir ve çalıştırılabilir. Grup üyeleri okuyabilir ve yazabilir. Bunların dışındakiler sadece okuyabilir.
Dosyanın Modunu Değiştirmek chmod
Yukarıda bahsettiğimiz yetkiler chmod
komutuyla düzenlenir. Bu düzenlemeyi dosyanın sahibi ve superuser yapabilir. chmod
ile yetki düzenlemenin en yaygın yollarından biri chmod’u takiben argüman olarak yazılan sekizlik sistemde üç adet rakamdır. Bu rakamlar 0 ile 7 arasında değer alır (8’li sistemin tabiatı gereği). Her bir rakam sırasıyla dosyanın sahibine, gruba ve kalan herkese ait yetkileri belirler. Her bir rakam üçlü blok olarak ne tür bir yetki karşılığına geliyor görelim:
0 : ---
| 1 : --x
| 2 : -w-
| 3 : -wx
4 : r--
| 5 : r-x
| 6 : rw-
| 7 : rwx
Örnekler:
Bu yazı için oluşturduğumuz çalışma diznimiz olan lnx_komutlari
diznimizin içine girelim ve içinde ne var ne yok listeleyelim:
erkan@vm:~\$ cd lnx_kmtlari/ erkan@vm:~/lnx_kmtlari\$ ls ataturk_bilim_sozleri.txt dir1 dir1-sembolik dir2 dir3 sifre sifre-semblolik
dosyamız üzerinde yukarıdaki açıklama ve örnek şekle göre chmod uygulayalım. Öncelikle dosyanın sahibine (erkan kullanıcısı) okuma ve yazma yetkisi verelim. Grup üyeleri ve diğer herkes hiç bir yetkiye sahip olmasın.ataturk_bilim_sozleri.txt
erkan@vm:~/lnx_kmtlari\$ chmod 600 ataturk_bilim_sozleri.txt erkan@vm:~/lnx_kmtlari\$ ls -l ataturk_bilim_sozleri.txt -rw------- 1 erkan erkan 840 Eyl 17 14:00 ataturk_bilim_sozleri.txt
Dosya sahibi (erkan) okuma, yazma ve çalıştırma yetkisi alsın ancak grup üyeleri ve diğer herkes avucunu yalasın.
erkan@vm:~/lnx_kmtlari\$ chmod 700 ataturk_bilim_sozleri.txt erkan@vm:~/lnx_kmtlari\$ ls -l ataturk_bilim_sozleri.txt -rwx------ 1 erkan erkan 840 Eyl 17 14:00 ataturk_bilim_sozleri.txt
Şimdi herkese adil davranalım ve herkese okuma ve yazma/değiştirme yetkisi verelim:
erkan@vm:~/lnx_kmtlari\$ chmod 666 ataturk_bilim_sozleri.txt erkan@vm:~/lnx_kmtlari\$ ls -l ataturk_bilim_sozleri.txt -rw-rw-rw- 1 erkan erkan 840 Eyl 17 14:00 ataturk_bilim_sozleri.txt
Sahibine full yetki diğerleri sadece okusun ve değiştirsin/yazsın:
erkan@vm:~/lnx_kmtlari\$ chmod 766 ataturk_bilim_sozleri.txt erkan@vm:~/lnx_kmtlari\$ ls -l ataturk_bilim_sozleri.txt -rwxrw-rw- 1 erkan erkan 840 Eyl 17 14:00 ataturk_bilim_sozleri.txt
Bugün cömertliğim tuttu alın hepinize full yetki!
erkan@vm:~/lnx_kmtlari\$ chmod 777 ataturk_bilim_sozleri.txt erkan@vm:~/lnx_kmtlari\$ ls -l ataturk_bilim_sozleri.txt -rwxrwxrwx 1 erkan erkan 840 Eyl 17 14:00 ataturk_bilim_sozleri.txt
Görüşmek dileğiyle…