Linux’ta Dosya İzinlerini Kontrol Etme: Tam Bir Rehber
Linux, dünyanın sunucularının çoğunu güçlendirir — VPS Hosting ortamlarından kurumsal düzeyde Dedicated Servers‘a kadar — ve bunun iyi nedenleri vardır. Hızlı, kararlı ve güvenlik merkezli olarak inşa edilmiştir. Bu güvenliğin en temel taşlarından biri dosya izin sistemidir: sistemdeki herhangi bir dosya veya dizine kimin okuyabileceğini, değiştirebileceğini veya çalıştırabileceğini tam olarak kontrol eden hassas ve zarif bir mekanizma.
İster bir web uygulaması dağıtan bir geliştirici, ister bir sunucuyu güvenli hale getiren bir sistem yöneticisi, ister komut satırını öğrenen bir başlangıç olun, Linux’ta dosya izinlerini kontrol etmeyi ve yorumlamayı anlamak vazgeçilmez bir beceridir. Bu kılavuz, temel izin modelinden ileri özel bitlere kadar her şeyi kapsar — pratik komutlar ve gerçek dünya örnekleriyle.
Linux Dosya İzinleri Nedir?
Linux’taki her dosya ve dizinin kendisine bağlı bir izin seti vardır. Bu izinler hangi işlemlere izin verildiğini ve kimin tarafından yapılabileceğini tanımlar. Üç temel izin türü vardır:
| İzin | Sembol | Dosyada Ne Yapar | Dizinde Ne Yapar |
|---|---|---|---|
| Okuma | r | Dosyanın içeriğini görüntüle | İçindeki dosyaların adlarını listele |
| Yazma | w | Dosyayı değiştir veya sil | İçinde dosya oluştur veya kaldır |
| Çalıştırma | x | Dosyayı program olarak çalıştır | Dizine gir (içinde gezin) |
Bu üç izin, üç farklı kullanıcı kategorisine bağımsız olarak uygulanır:
- Sahip (kullanıcı) — Dosyaya sahip olan kullanıcı, tipik olarak onu oluşturan kişi.
- Grup — Dosyanın atanmış grubuna ait olan herhangi bir kullanıcı.
- Diğerleri — Sistemdeki diğer herkes.
Bu üçe üç izin matrisi, Linux yöneticilerine sistemdeki her kaynağa erişim üzerinde ayrıntılı, güçlü kontrol sağlar.
Dosya İzinlerini Kontrol Etme: ls -l Komutu
Dosya izinlerini kontrol etmenin en hızlı ve en yaygın kullanılan yöntemi ls -l komutudur (uzun listeleme biçimi).
ls -l file.txtÖrnek çıktı:
-rw-r--r-- 1 alice developers 1024 Aug 16 12:30 file.txtBu çıktının her bileşenini parçalayalım:
- rw- r-- r-- 1 alice developers 1024 Aug 16 12:30 file.txt
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ └─ Filename
│ │ │ │ │ │ │ │ └─ Last modified
│ │ │ │ │ │ │ └─ File size (bytes)
│ │ │ │ │ │ └─ Group name
│ │ │ │ │ └─ Owner name
│ │ │ │ └─ Number of hard links
│ │ │ └─ Others' permissions
│ │ └─ Group's permissions
│ └─ Owner's permissions
└─ File type (- = regular file, d = directory, l = symlink)Yani -rw-r--r-- bize şunu söyler:
- Sahip (
alice): Okuma + Yazma (rw-) - Grup (
developers): Yalnızca okuma (r--) - Diğerleri: Yalnızca okuma (
r--)
Birden Fazla Dosyanın İzinlerini Kontrol Etme
Bir dizindeki tüm dosyaların izinlerini aynı anda görmek için:
ls -la /var/www/html-a bayrağı gizli dosyaları (nokta ile başlayanlar) içerir. Bu, özellikle Shared Web Hosting veya VPS ortamında web sunucusu dizinlerini denetlerken kullanışlıdır.
stat ile Ayrıntılı İzin Bilgisi Alma
Daha kapsamlı bir döküm için — hem sembolik hem de sayısal gösterimleri içeren — stat komutunu kullanın:
stat file.txtÖrnek çıktı:
File: file.txt
Size: 1024 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 131073 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ alice) Gid: ( 1000/developers)
Access: 2024-08-16 12:30:00.000000000 +0000
Modify: 2024-08-16 12:30:00.000000000 +0000
Change: 2024-08-16 12:30:00.000000000 +0000Anahtar satır:
Access: (0644/-rw-r--r--) Uid: ( 1000/ alice) Gid: ( 1000/developers)Bu size şunları verir:
- Sayısal (sekizlik) gösterim:
0644 - Sembolik gösterim:
-rw-r--r-- - Kullanıcı Kimliği (UID) ve Grup Kimliği (GID) ile insan tarafından okunabilir adları
stat komutu, üretim sunucularında izin hatalarını giderirken priceless’tır, çünkü tek bir çıktıda ihtiyacınız olan tüm bağlamı sağlar.
Sayısal (Sekizlik) İzin Gösterimini Anlamak
Linux izinleri sayılar olarak ifade edilebilir; bu, chmod gibi komutlar tarafından kullanılan biçimdir. Her izin türüne bir değer atanır:
| İzin | Sayısal Değer |
|---|---|
Okuma (r) | 4 |
Yazma (w) | 2 |
Çalıştırma (x) | 1 |
İzin yok (-) | 0 |
Her kullanıcı kategorisinin izin değerini değerleri toplayarak hesaplarsınız:
| Kombinasyon | Hesaplama | Sayısal Değer |
|---|---|---|
rwx | 4 + 2 + 1 | 7 |
rw- | 4 + 2 + 0 | 6 |
r-x | 4 + 0 + 1 | 5 |
r-- | 4 + 0 + 0 | 4 |
--- | 0 + 0 + 0 | 0 |
Üç basamaklı sekizlik bir sayı tam izin setini temsil eder:
0644 → Owner: 6 (rw-) | Group: 4 (r--) | Others: 4 (r--)
0755 → Owner: 7 (rwx) | Group: 5 (r-x) | Others: 5 (r-x)
0700 → Owner: 7 (rwx) | Group: 0 (---) | Others: 0 (---)Dizinlerdeki İzinleri Kontrol Etme
Dizinler aynı izin modelini kullanır, ancak her bitin anlamı biraz farklıdır. Bir dizinin içeriği yerine dizinin kendisini incelemek için ls -ld kullanın (-d bayrağına dikkat edin):
ls -ld myfolderÖrnek çıktı:
drwxr-x--- 2 alice developers 4096 Aug 16 12:30 myfolderBaşındaki d bunun bir dizin olduğunu doğrular. İzinler şu şekilde ayrılır:
- Sahip (
alice):rwx— Listeleyebilir, dosya oluşturabilir/silebilir ve dizine girebilir - Grup (
developers):r-x— Dosyaları listeleyebilir ve girebilir, ancak oluşturamaz veya silemez - Diğerleri:
---— Hiç erişim yok
> Önemli: Bir dizinde çalıştırma biti (x), ona girme yeteneği anlamına gelir (yani cd kullanmak). x olmadan, bir kullanıcı okuma izni olsa bile dizine giremez. Bu, yeni başlayanlar için yaygın bir karışıklık kaynağıdır.
Özel İzin Bitleri: setuid, setgid ve Sticky Bit
Standart dokuz izin bitinin ötesinde, Linux gelişmiş erişim kontrolü sağlayan üç özel izin biti destekler:
1. setuid (s sahibinin çalıştırma bitinde)
Çalıştırılabilir bir dosyaya ayarlandığında, program çağıran kullanıcının ayrıcalıkları yerine dosya sahibinin ayrıcalıklarıyla çalışır. Bu, passwd gibi komutların normal kullanıcıların /etc/shadow değiştirmesine izin vermesinin nedenidir (root tarafından sahip olunan).
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 Mar 27 2023 /usr/bin/passwdSahibinin çalıştırma konumundaki s setuid’i gösterir.
2. setgid (s grubun çalıştırma bitinde)
Dosyada, program grubun ayrıcalıklarıyla çalışır. Dizinde, içinde oluşturulan yeni dosyalar otomatik olarak dizinin grubunu devralır — paylaşılan proje klasörleri için kullanışlıdır.
ls -ld /shared/project
drwxrwsr-x 2 alice developers 4096 Aug 16 12:30 /shared/project3. Sticky Bit (t diğerlerinin çalıştırma bitinde)
Dizine ayarlandığında, yalnızca dosyanın sahibi (veya root) içindeki dosyaları silebilir veya yeniden adlandırabilir; diğerleri yazma izni olsa bile. Bu, /tmp için standart yapılandırmadır:
ls -ld /tmp
drwxrwxrwt 12 root root 4096 Aug 16 12:30 /tmpSonundaki t sticky bitin etkin olduğunu gösterir.
Özel bitlerin sayısal gösterimi:
| Özel Bit | Sayısal Değer |
|---|---|
| setuid | 4000 |
| setgid | 2000 |
| Sticky bit | 1000 |
Yani drwxrwxrwt = 1777 (1000 + 777).
Tam İzin Referans Tablosu
| Sembolik | Sayısal | Dosyada Anlamı | Dizinde Anlamı |
|---|---|---|---|
--- | 0 | Erişim yok | Erişim yok |
--x | 1 | Yalnızca çalıştırma | Yalnızca giriş |
-w- | 2 | Yalnızca yazma | İçeriği değiştir (x ile) |
-wx | 3 | Yazma + Çalıştırma | Gir ve değiştir |
r-- | 4 | Yalnızca okuma | Adları listele (x olmadan kullanışlı değil) |
r-x | 5 | Okuma + Çalıştırma | Listele ve gir |
rw- | 6 | Okuma + Yazma | Listele ve değiştir (girmeden) |
rwx | 7 | Tam erişim | Tam kontrol |
Gerçek Dünya İzin Örnekleri
Pratikte karşılaşacağınız en yaygın izin desenleri şunlardır:
-rw-r--r-- (0644) — Standart Dosya
-rw-r--r-- 1 alice developers 1024 Aug 16 12:30 config.txtSahip okuyabilir ve yazabilir. Grup ve diğerleri yalnızca okuyabilir. Yapılandırma dosyaları ve web içeriği için tipiktir.
-rwxr-xr-x (0755) — Çalıştırılabilir Betik veya İkili
-rwxr-xr-x 1 alice developers 4096 Aug 16 12:30 deploy.shSahibinin tam erişimi vardır. Diğer herkes okuyabilir ve çalıştırabilir ancak değiştiremez. Shell betikleri, web sunucusu ikilileri ve genel çalıştırılabilirler için standarttır.
-rw------- (0600) — Özel Dosya
-rw------- 1 alice alice 1679 Aug 16 12:30 id_rsaYalnızca sahip okuyabilir veya yazabilir. Başka kimse için erişim yok. SSH özel anahtarları için gereklidir — SSH, daha geniş izinlere sahip bir anahtar dosyasını kullanmayı reddedecektir.
drwxr-xr-x (0755) — Standart Genel Dizin
drwxr-xr-x 5 alice developers 4096 Aug 16 12:30 public_htmlWeb kök dizinleri için yaygındır. Sahibinin tam kontrolü vardır; diğerleri göz atabilir ve girebilir.
