R - dizin izinlerinin Linux'ta nasıl çalışması gerekiyor?


11

Oluşturulan bir dizin oluşturduk bu izinlere sahip - diğer kullanıcı

drwxr - r-- 5 kullanıcı kullanıcı 4096 2012-09-15 19:30 siteler

Ne zaman başka bir kullanıcı olarak dizinde bir ls -l

ls -l / home / user / sites

bu dizin çıktısıdır. Bu dizinde x biti olmadan dosya adlarının hiç gösterilmeyeceğini düşündüm.

d????????? ? ? ? ?                ? dev.user.com  
-????????? ? ? ? ?                ? user.20120914_082804.sql.gz   
d????????? ? ? ? ?                ? shared  
-????????? ? ? ? ?                ? shared.tar.gz  
-????????? ? ? ? ?                ? www.20120914_083256.tar.gz
d????????? ? ? ? ?                ? www.user.com

Burada bir miktar tutarsızlık var mı?

Yanıtlar:


16

xsize aslında olmak için izin verir de dizin ve erişim dizinindeki dosyaları, rsize dizinin içeriğini görme izni verir.

Dizini xbit vererek ve bit kaldırarak durumu tersine çevirirseniz, rkullanıcı açılabilir shared.tar.gz(dosyanın kendisinde uygun izinleri varsayarak), ancak yalnızca lsdizindeki dosyaları listeleyemeyeceği için dosya adını önceden biliyorsa .


1
Bunu test edip size geri döneceğim. Linux dosya paylaşımının bu yönünü her zaman kafa karıştırıcı buldum.
vfclists

Bu davranış Linux'a özgü değildir; UNIX uyumlu bir sistem olan UNIX - Linux'un en eski günlerine kadar uzanır ve bu şekilde çalışır - Windows NT ACL girişlerinin benzer izin bitleri vardır.

2

İ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, rset ile lsdizindeki 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 risimlerini bulamayacağınız anlamına gelir . Tabii ki, istenen dosyanın izinleri de erişimi etkiler, bu nedenle xdizinde 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, wset ile bu dizinde yeni dosyalar oluşturabileceğiniz veya mevcut dosyaların dizin girişlerini düzenleyebileceğiniz anlamına gelir . Ancak xayarlanmadan, aslında herhangi bir dosya kullanamazsınız ve ronları 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ı, riçeriğini görebileceğiniz, xkullanabileceğiniz wanlamına gelir ve dizinler için bile değiştirebileceğiniz anlamına gelir.


Sanırım mode_tbiraz daha fazla şey açıklayabilirsiniz (izinler ve dosya türü aynı 32bit alanında saklandığı özellikle bölüm)
SaveTheRbtz

1
80'lerde aktif olarak unix kullanıcısı ve geliştiricisiydim. Bugün neyin doğru olduğuna dair hikayeyi tarihsel bağlamda anlattığım kadar anlatmaya çalışmıyordum ve eğlencemi, ilk unix öğrenirken karşılaştığım bilmecenin bugün de sorulması ve büyük ölçüde aynı açıklama 1983 yılında yerel gurulardan aldım. Ne kadar çok şey değişirse, o kadar fazla kalırlar ....
RBerteig
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.