İçeriğe geç
Favoriler

Chmod Hesaplayıcı – Linux dosya izinleri

Güncellendi:

Linux dosya izinlerini tıklanabilir onay kutusu ızgarası, oktal kod (örn. 755) ve sembolik gösterim (örn. rwxr-xr-x) arasında dönüştürün. Kullanıma hazır chmod komutları, ls -l önizlemesi ve düzenli dosyalar ile dizinler için güvenlik notları da dahildir.

Linux izinlerini onay kutuları, sekizlik kod ve sembolik gösterim arasında dönüştürün

Giriş alanları
Sahip (u)
Grup (g)
Diğerleri (o — geri kalan herkes)
Özel bitler
Etkinleştirilirse, herhangi bir değeri değiştirdiğinizde sonuç otomatik olarak güncellenir.

Chmod formülü

Formül
\[ d = 4 \cdot r + 2 \cdot w + 1 \cdot x \] \[ \text{kip} = (4 \cdot s_{\text{uid}} + 2 \cdot s_{\text{gid}} + 1 \cdot s_{\text{sticky}})\,(d_{\text{sahip}})(d_{\text{grup}})(d_{\text{diğerleri}}) \]

Burada:

  • \(r\), \(w\), \(x\) — okuma, yazma ve çalıştırma bitleri; izin verilmişse 1, verilmemişse 0 değerini alır;
  • \(d\) — bir sınıfın (sahip, grup veya diğerleri) 4–2–1 ağırlıklarından oluşan oktal basamağı;
  • \(s_{\text{uid}}\), \(s_{\text{gid}}\), \(s_{\text{sticky}}\) — setuid, setgid ve sticky özel bitleri (bunlar da 0 ya da 1).

Okuma 4, yazma 2, çalıştırma 1 olarak sayıldığı için her izin sınıfı tek bir oktal basamağa sığar; verilen izinlerin değerleri toplanınca 0 ile 7 arasında bir sayı çıkar. Başa eklenen isteğe bağlı basamak, özel bitleri aynı 4–2–1 ağırlıklarıyla kodlar; 4755 yazdığınızda bu, setuid artı bildiğimiz 755 kipi demektir.

Chmod – Hesaplama örneği

Örnek: sahibinin betiği serbestçe düzenleyip çalıştırabildiği, grupla diğer herkesin ise yalnızca okuyup çalıştırabildiği durum — klasik 755 düzeni (hesaplayıcının varsayılan ızgarası da budur: sahip r+w+x, grup r+x, diğerleri r+x).

\[ d_{\text{sahip}} = 4 + 2 + 1 = 7 \]
\[ d_{\text{grup}} = 4 + 0 + 1 = 5 \]
\[ d_{\text{diğerleri}} = 4 + 0 + 1 = 5 \]
\[ \text{kip} = 755 \]

Sonuç: oktal kip 755, sembolik kip rwxr-xr-x, komut chmod 755 dosya. Bir ls -l listesinde dosya -rwxr-xr-x olarak görünür.

Hesaplayıcı nasıl kullanılır

  1. Giriş yöntemi açılır menüsünü açın ve izinleri nasıl tanımlamak istediğinizi seçin: Onay kutuları (izin ızgarası), Oktal kod, Sembolik gösterim veya Hazır ayarlar. Yalnızca seçilen yönteme ait alanlar görünür kalır.
  2. Onay kutuları yönteminde her sınıf — Sahip (u), Grup (g) ve Diğerleri (o) — için Okuma, Yazma ve Çalıştırma kutularını işaretleyin; isterseniz Setuid, Setgid ve Sticky özel bitlerini de ekleyin.
  3. Oktal kod yönteminde üç basamak yazın (örn. 755) ya da başına özel bit basamağı gelen dört basamak (örn. 4755). Sembolik gösterim yönteminde rwxr-xr-x gibi dokuz karakter girin ya da -rwxr-xr-x gibi tam bir ls -l satırını yapıştırın — baştaki tür karakteri otomatik olarak atılır. Hazır ayarlar yönteminde ise hazır bir izin setini seçmeniz yeterli.
  4. Dosya türü seçeneğini Düzenli dosya (-) veya Dizin (d) olarak ayarlayın; böylece açıklama ve ls -l önizlemesi doğru terimleri kullanır.
  5. Sonuçları okuyun: sayısal (oktal) kip, sembolik kip, kopyalamaya hazır chmod komutları, ls -l biçiminde önizleme, günlük dille bir açıklama ve güvenlik notları.

Linux dosya izinleri nedir ve nasıl okunur

Linux sistemindeki her dosya ve dizin, üç sınıfa ayrılmış dokuz izin biti taşır: dosyayı oluşturan sahip (u), dosyanın ait olduğu grup (g) ve makinedeki diğer herkesi kapsayan diğerleri (o). Her sınıf içinde üç bit, o sınıfın dosyayı okuyup (r), yazıp (w) çalıştırabileceğini (x) belirtir. chmod komutu bu bitleri değiştirir; hesaplayıcı ise bunların herhangi bir gösterimini diğer tüm gösterimlere çevirir.

Oktal gösterim, 4–2–1 ağırlıklarıyla her sınıfı tek bir basamağa sıkıştırır; 644 ya da 755 gibi kipleri bu yüzden görürsünüz. Sembolik gösterim aynı bitleri soldan sağa dokuz karakter olarak yazar: önce sahip üçlüsü, sonra grup üçlüsü, en sonda diğerleri üçlüsü. Tire, iznin verilmediğini gösterir; rw-r--r-- bu yüzden okunabilir ama çalıştırılamayan 644'tür. İki biçim de tam olarak aynı bitleri anlatır — önünüzdeki aracın kabul ettiğini seçin.

Bitlerin anlamı dosya türüne göre değişir. Düzenli bir dosyada r içeriğini görmek, w içeriğini değiştirmek, x onu program olarak çalıştırmak demektir. Bir dizinde ise r içindeki adları listelemek, w içinde yeni girdiler oluşturmak, adlandırmak ya da silmek, x cd ile içine girmek ve içindeki dosyaları açmaktır. Dizindeki içeriklerin kullanılabilmesi için dizine x gerekmesi ve ~/.ssh gibi özel klasörlerde standart kipin 700 olması bu yüzendir.

Tabloyu üç ek özel bit tamamlar. Setuid (4), bir çalıştırılabilir dosyayı sahibinin yetkileriyle çalıştırır — /usr/bin/passwd arkasındaki mekanizma budur. Setgid (2) aynısını grup için yapar; dizinlerde ise yeni dosyaların dizinin grubunu devralmasını sağlar. Sticky (1), ortak yazılabilir bir dizinde silmeyi kısıtlar ve kullanıcılar yalnızca kendi dosyalarını silebilir — /tmp'yi (1777) güvenli kuran kural budur. Sembolik çıktıda bunlar bir çalıştırma hanesinde s/S, son hanede t/T olarak görünür; büyük harf, altındaki çalıştırma bitinin kapalı olduğunu gösterir.

Sık kullanılan izin kipleri

Kip Sembolik Tipik kullanım
600 rw------- SSH anahtarları gibi özel dosyalar
644 rw-r--r-- Sıradan dosyalar, web içeriği
700 rwx------ ~/.ssh gibi özel dizinler
755 rwxr-xr-x Programlar, betikler, web sunucusundan sunulan dosyalar
775 rwxrwxr-x Güvenilen grup için ortak dizinler
1777 rwxrwxrwt /tmp gibi ortak geçici alanlar
4755 rwsr-xr-x Setuid root çalıştırılabilirleri (tutumlı kullanın)

Varsayımlar, sınırlar ve pratik ipuçları

  • 777 neredeyse hiçbir zaman doğru cevap değildir. Bir dosyayı herkese açık yazılabilir yapmak, sistemdeki tüm hesaplara kapıyı açar. 777'ye uzanmadan önce düzgün seçilmiş bir grupla 775'i ya da ACL'leri (setfacl) tercih edin.
  • Herkese açık yazma iznini setuid veya setgid ile asla birleştirmeyin. 4777 veya 7777 gibi kipler, dosyanın yükseltilmiş yetkiyle çalışmaya devam ederken herkesin dosyayı değiştirmesine izin verir — klasik bir yetki yükseltme açığıdır.
  • Diğerleri, sahibinden daha yetkili olmamalı. Üçüncü basamak ilkinden büyükse kipi büyük olasılıkla yanlış yazmışsınızdır; güvenlik notları bunu uyarı olarak belirtir.
  • 000, sahibi de dahil herkesi engeller. Erişimi yalnızca root geri kazanabilir; gizlilik istiyorsanız bunun yerine 600 ya da 700 kullanın.
  • chmod -R konusunda dikkatli olun. Özyinelemeli sayısal bir kip, tüm dosya ve alt dizinlerdeki bütün bitleri tek seferde ezerr; dizinlere genellikle x gerekirken veri dosyalarında bulunmamalıdır. Kipleri dosya türüne göre uygulayın; tüm ağaca topluca uygulamayın.
  • Root, izin bitlerini yok sayar. İzinler normal kullanıcıları sınırlar; root düzeyindeki erişime karşı bir koruma sağlamaz.
  • Hesaplayıcı, bilinen izin gösterimlerini özel bitlerle birlikte birbirine çevirir; ancak gerçek erişimi etkileyebilecek ACL, SELinux veya diğer zorunlu erişim denetimlerini hesaba katamaz.

Linux tarafındaki başka kodlamalarla çalışıyorsanız, temeldeki sayı sistemlerini anlamak için Unix zaman damgası dönüştürücüsü, onaltılık dönüştürücü ve ikili hesaplayıcı da işinize yarayabilir.

Sıkça Sorulan Sorular

Dosyalara ve dizinlere özyinelemeli olarak farklı izinleri nasıl ayarlarım?

Her dosya türüne ayrı bir kip uygulamak için find komutunu kullanın: dizinler için find /yol -type d -exec chmod 755 {} +, dosyalar için find /yol -type f -exec chmod 644 {} +. Düz bir chmod -R 755 veri dosyalarına ihtiyaç duymadıkları çalıştırma biti verir; -R 644 ise dizinlerden x bitini alır ve onları girilemez yapar. Türe göre ayırmak her iki hatayı da önler.

Bir dosyanın geçerli izinlerini oktal sayı olarak nasıl görebilirim?

stat -c '%a' dosya komutunu çalıştırın (macOS'ta stat -f '%Lp' dosya) ve kipi doğrudan 644 gibi basamaklar olarak alın. ls -l listesi yalnızca sembolik biçimi gösterir; onu kendiniz çözmek zorunda kalırsınız. Bu oktal çıktı, hesaplayıcının Oktal kod alanının tam beklediği şeydir; yapıştırıp her bitin ne yaptığını inceleyebilirsiniz.

chmod yaptıktan sonra neden hâlâ "Permission denied" hatası alıyorum?

Üç şeye bakın: dosyaya ulaşabilmek için yol üzerindeki dizinler size x (çalıştırma) izni vermelidir — 644 bir dizin, içindeki dosya 777 olsa bile her şeyi engeller. Ayrıca sizin sahibi olmadığınız bir dosyaya chmod uygulayamazsınız; son olarak dosya sistemi düzeyindeki kurallar bitleri geçersiz kılabilir: noexec gibi bağlama seçenekleri, ACL'ler, SELinux veya AppArmor kipten bağımsız olarak erişimi reddedebilir.

chmod a+r ne anlama geliyor, o+r'den farkı nedir?

a "all" (hepsi) demektir; değişikliği aynı anda sahip (u), grup (g) ve diğerlerine (o) uygular, yani a+r herkese okuma izni verir. o+r ise yalnızca diğerleri sınıfını etkiler. Oktal biçimde böyle bir kısayol yoktur: sayısal bir kip her zaman dokuz bitin tümünü yeniden yazar; mevcut bitlerini koruması gereken sınıflar için bu yüzden tam sayısal bir değişiklik yerine sembolik + ve − ile ayarlama yapmak daha doğrudur.

Yeni dosyalarım neden 755 yerine 664 alıyor? umask nedir?

umask, kabuğa özgü bir ayardır; bir program dosya oluştururken istediği kipten bitleri kırpar. Yaygın olan 002 umask'ıyla 666 isteyen bir program (rw-rw-rw-) 664 alır, 777 isteyen bir dizin ise 775 olur. Kendinizinkini umask komutuyla kontrol edin, örn. umask 022 ile değiştirin. chmod, oluşturma anında devreye girmez; bitleri yalnızca sonradan yeniden yazar.

Setuid neden kabuk betiğimde çalışmıyor?

Çoğu Linux sistemi, yorumlanan betiklerdeki (kabuk, Python ve benzeri) setuid bilini kasıtlı olarak yok sayar; çünkü gerçekte çalıştıran şey betik değil yorumlayıcıdır ve yorumlayıcılar çağıran kullanıcı olarak çalışır. Setuid, /usr/bin/passwd gibi derlenmiş çalıştırılabilir dosyalarda etkili olur. Bir betikten yükseltilmiş eylemler gerekiyorsa, betiğe chmod 4755 yapmayı ummak yerine sudo kurallarını kullanın.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir