İzinlerin bu yorumu erken Unix dosya sistemlerine dayanır. Başlangıçta sadece dosyalar vardı. (Eh, ve cihazlar ve borular, ve ... ama burada bir hikaye anlatmaya çalışıyorum,% 100 kesinlikle doğru değil; ayrıca, cihazlar ve borular ve her şey için hepsi doğru çünkü her şey bir dosya, hatta dizinleri).
Dizinler yalnızca dosya sisteminin dizin ağacını ve içerdiği dosyaları açıklayan meta verileri tutmak için kullandığı dosyalardır. Bir dizindeki her dosya, bir dosya adı (başlangıçta 14 karakter, IIRC) ile birlikte verilerin saklandığı inode numarası, dosyanın boyutu, zaman damgaları ve izinler kelimesini içeren basit bir veri yapısı ile tanımlanmıştır. . Her dizin iki adlandırılmış girdileri ile başladı .
ve ..
bu çok dizinin inode ilk işaret, ve ana dizinin inode saniyede.
İzin kelimesi, sahibinin, aynı grubun diğer üyelerine ve dünyanın muamelesini tanımlamak için dokuz bite sahipti. İlgili kullanıcının dosyayı okuyabileceği, yazabileceği veya yürütebildiği her bayrak için üç bit. (Görmezden geldiğim 16 bitlik izin kelimesinde beş bit daha olduğunu fark edebilirsiniz. Bunlar sonunda anlamlar atandı, ancak bu hikayenin bu kısmı ile ilgili değil.) (Ayrıca, dokuzun bu yorumu bitler, Linux da dahil olmak üzere erken Unix'in tüm alt soylarında hemen hemen aynı kaldı.)
Dolayısıyla, eğer bir dizin gerçekten sadece özel bir dosya türüyse ve bazı dizindeki bir giriş tarafından tanımlanmışsa, açıkça izin bitleri vardır ve bu bitler muhtemelen bir şey ifade eder. Ama soru tam olarak ne. Bu bitlere anlam atamanın en kolay yolu, ilk başta ne anlama geldiklerini değiştirmektir. Ve aslında yapılan budur.
Bu nedenle, okuma biti kullanıcının dizinin kendisini okuyabileceği anlamına gelir. Bu, okuyucuya her bir dosyanın verilerinin dosya adına, zaman damgalarına, boyutuna ve inode numarasına erişim sağlar. Özellikle, r
set ile ls
dizindeki tüm dosyaların adlarını görmek için kullanabilirsiniz , ancak bu listelenen dosyaların herhangi birini açmak (veya herhangi bir şekilde kullanmak) için yeterli değildir.
Yürütme biti, kullanıcının dizini "yürütebileceği" anlamına gelir. Dizinler özel olduğundan, execute gerçekten bir girdiyi isme göre aramak ve kullanmak anlamına gelir. Bu x
, ayarlanmışsa dosyaları açmayı deneyebileceğiniz , ancak olmadan r
isimlerini bulamayacağınız anlamına gelir . Tabii ki, istenen dosyanın izinleri de erişimi etkiler, bu nedenle x
dizinde bile size sunmadığı sürece bir dosyayı okuyamazsınız r
.
Yazma biti, kullanıcının dizine yazabileceği anlamına gelir, ancak doğal olarak sadece dosya sisteminin kendisi tarafından aracılık edilir. Bu, w
set ile bu dizinde yeni dosyalar oluşturabileceğiniz veya mevcut dosyaların dizin girişlerini düzenleyebileceğiniz anlamına gelir . Ancak x
ayarlanmadan, aslında herhangi bir dosya kullanamazsınız ve r
onları da göremezsiniz.
Unix ve onun alt öğelerinde daha karmaşık kullanıcı kimliği modelleri geliştikçe, aynı temel açıklamalar oldukça değişmeden kalmayı başardı.
Kısacası, r
içeriğini görebileceğiniz, x
kullanabileceğiniz w
anlamına gelir ve dizinler için bile değiştirebileceğiniz anlamına gelir.