chmod Hesaplama (Unix Dosya İzni)

Unix izinlerinde her sınıf (sahip, grup, diğerleri) için okuma 4, yazma 2, çalıştırma 1 değerindedir ve toplanır. 755 = rwxr-xr-x: sahip 7 (4+2+1) ile her şeyi yapar, grup ve diğerleri 5 (4+1) ile okuyup çalıştırır. Dört haneli kipte ilk hane setuid (4), setgid (2) ve sticky (1) bitleridir.

Son güncelleme: · Yazılım ve bilişim hesaplamaları

Hesaplama formu

Elindeki izni oktal sayı ya da ls -l çıktısındaki rwx dizisi olarak yaz.

1-4 haneli oktal sayı: 644, 755, 0750, 4755 (dört hanede ilk hane setuid/setgid/sticky).

Ne hesaplaman gerektiğinden emin değil misin? Hesap asistanına sor, uygun hesaplayıcıyı birlikte bulalım.

Sonucun burada görünecek

Soldaki formu doldurup Hesapla'ya bas; ana sonuç, dağılım ve adım adım hesap burada açılır.

Örnek: Sembolik izin rwxr-xr-x Örneği incele

chmod izni nasıl hesaplanır?

İzinler üç sınıfa ayrılır: dosyanın sahibi (u), dosyanın grubu (g) ve diğer herkes (o). Her sınıfın üç biti vardır: okuma (r), yazma (w), çalıştırma (x).

Her bitin bir değeri vardır: r = 4, w = 2, x = 1. Bir sınıfın oktal hanesi açık bitlerin toplamıdır. rw- = 4 + 2 = 6, r-x = 4 + 1 = 5, r-- = 4.

Üç hane yan yana yazılır: sahip, grup, diğerleri. rw-r--r-- = 644 (sahip okur ve yazar, diğerleri yalnızca okur).

Dört haneli kipte baştaki hane özel bitleri taşır (POSIX): setuid = 4, setgid = 2, sticky = 1. ls -l bu bitleri x yerine s ya da t harfiyle gösterir. Büyük S ya da T, özel bitin açık ama çalıştırma izninin kapalı olduğunu belirtir.

Dizinlerde x izni dizine girmeyi (cd), r izni içeriği listelemeyi, w izni dosya ekleyip silmeyi sağlar. Bu yüzden dizinler genellikle 755, dosyalar 644 olur.

Formül

Sınıf hanesi
r × 4 + w × 2 + x × 1
Üç haneli kip
sahip · grup · diğerleri (ör. 7 · 5 · 5 = 755)
Özel bit hanesi
setuid × 4 + setgid × 2 + sticky × 1

Örnek hesap

Aşağıdaki örnek, şu değerlerle (Elindeki gösterim: Oktal (755), Oktal izin: 755) hesaplayıcının kendisiyle hesaplanmıştır.

Örnek hesap adımları
AdımHesapDeğer
Hane değeriher sınıf için r = 4, w = 2, x = 1 toplanır755
Özel bitlersetuid = 4, setgid = 2, sticky = 1 (dört haneli kipte ilk hane)0
Sembolik izinrwxr-xr-x
Örneğin tablosu (3 satır)
SınıfOktal haneOkuma (r=4)Yazma (w=2)Çalıştırma (x=1)
Sahip (u)7evetevetevet
Grup (g)5evethayırevet
Diğerleri (o)5evethayırevet

Kaynaklar

Son güncelleme: (içerik ya da kullanılan verinin son değiştiği ya da kontrol edildiği tarih).

Hesaba katılmayanlar

  • ACL (setfacl) ile verilen ek izinler ve SELinux/AppArmor bağlamları hesaba katılmaz; ls -l çıktısının sonundaki + ya da . işareti bunlara işaret eder.
  • umask hesabı yapılmaz: yeni oluşturulan dosyanın izni, programın istediği kipten umask bitlerinin çıkarılmasıyla belirlenir.
  • Sembolik göreli komutlar (chmod g+w, o-x) mevcut izne bağlı olduğundan burada mutlak kip (u=rwx,g=rx,o=rx) olarak verilir.

Sıkça sorulan sorular

chmod 755 ne demek?

Sahip okuyabilir, yazabilir ve çalıştırabilir (7); grup ve diğer kullanıcılar okuyup çalıştırabilir ama değiştiremez (5). Betikler ve dizinler için yaygın izindir.

chmod 644 ile 755 farkı nedir?

644 (rw-r--r--) çalıştırma izni vermez; düz dosyalar, yapılandırma ve web sayfaları için uygundur. 755 (rwxr-xr-x) çalıştırma izni de verir; betikler, programlar ve dizinler için kullanılır.

chmod 777 kullanmak güvenli mi?

Genellikle hayır. 777 herkese yazma izni verir; sistemdeki her kullanıcı ya da ele geçirilmiş bir web süreci dosyayı değiştirebilir. Sorunu çözmek için doğru sahiplik (chown) ve 755/644 gibi dar izinler tercih edilir.

rwsr-xr-x içindeki s harfi nedir?

setuid bitidir. Program, onu çalıştıranın değil dosya sahibinin yetkisiyle çalışır (ör. passwd komutu). Oktal karşılığı 4755. Büyük S, setuid açık ama çalıştırma izninin kapalı olduğunu gösterir.

/tmp dizininin izni neden 1777?

Baştaki 1 sticky bitidir (ls -l'de sondaki t). Herkes dizine dosya yazabilir ama yalnızca kendi dosyasını silebilir ya da yeniden adlandırabilir.