İlk önce, düşünün: Bir dizin nedir? Bu sadece içinde yaşayan öğelerin bir listesi (dosyalar ve diğer dizinler). Yani: dizin = adların listesi.
Read bit = Ayarlandıysa, bu listeyi okuyabilirsiniz. Öyleyse, örneğin, bir dizininiz varsa poems
:
- İçinde
ls poems
yaşayan öğelerin bir listesini alabilirsin ve alacaksın ( -l
hiçbir ayrıntıyı açığa çıkarmayacak!).
- Komut satırı tamamlama kullanabilirsiniz
touch poems/so <TAB> poems/somefile
.
- Sen yapamaz
poems
(yani sizin çalışma dizinini cd
içine).
Yazma biti = Eğer ayarlanmışsa, bu listeyi değiştirebilirsin, yani üzerine {isim ekleyebilir, ismini değiştirebilirsin. Fakat! Aslında yalnızca yürütme biti ayarlanmışsa bunu yapabilirsiniz.
Execute bit = Bu dizini çalışma dizininiz, yani dizininiz yapın cd
. İsterseniz bu izne ihtiyacınız vardır:
- içinde yaşayan öğelere erişme (okuma, yazma, yürütme).
- listenin kendisini değiştirir, yani üzerine isim ekler, isimlendirir, sil (elbette yazma biti dizinde ayarlanmış olmalıdır).
İlginç durum 1 : Bir dizinde yazma + yürütme izniniz varsa, bu öğeler üzerinde yazma hakkınız olmasa bile içinde yaşayan öğeleri {silebilir, yeniden adlandırabilirsiniz}. (bunu önlemek için yapışkan bit kullanın)
İlginç durum 2 : Bir dizinde yürütme (ancak yazma) izniniz varsa ve içinde yaşayan bir dosyaya yazma izniniz varsa, dosyayı silemezsiniz (çünkü listeden çıkarmayı içerir). Bununla birlikte, içeriğini silebilirsiniz, örneğin bir metin dosyasıysa, açmak ve her şeyi silmek için vi kullanabilirsiniz. Dosya hala orada olacak, fakat boş olacak.
Özet:
Read bit = Listedeki isimleri okuyabilirsiniz.
Yazma biti = Eğer yürütme biti ayarlanmışsa, listedeki {ekleyebilir, yeniden adlandırabilir, silebilirsiniz.
Execute bit = Bu dizini çalışma dizininiz yapabilirsiniz.
Not: Kusalananda'nın bahsettiği makale iyi bir okuma.