Bagaimana izin r— direktori seharusnya berfungsi di Linux?

11

Saya telah membuat direktori yang dibuat memiliki izin ini - yang dimiliki pengguna lain

drwxr - r-- 5 pengguna pengguna 4096 2012-09-15 19:30 situs

Ketika melakukan ls-l pada direktori sebagai pengguna lain

ls -l / home / user / situs

ini adalah keluaran direktori. Saya pikir tanpa bit x ditetapkan pada direktori itu nama file tidak akan ditampilkan sama sekali.

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

Apakah ada beberapa ketidakkonsistenan di sini?

vfclists
sumber

Jawaban:

16

xmemberi Anda izin untuk benar-benar berada di direktori dan mengakses file di direktori, rmemberi Anda izin untuk melihat isi direktori.

Jika Anda membalikkan situasi dengan memberikan direktori xbit dan menghapus rbit, maka pengguna dapat membuka shared.tar.gz(dengan asumsi izin yang tepat pada file itu sendiri) tetapi hanya jika dia tahu nama file sebelumnya karena lstidak akan dapat membuat daftar file dalam direktori .

DerfK
sumber
1
Saya akan menguji ini dan kembali kepada Anda. Saya selalu menemukan aspek berbagi file Linux ini membingungkan.
vfclists
Perilaku itu tidak unik untuk Linux; tanggal kembali ke hari-hari awal UNIX - Linux, menjadi sistem yang kompatibel dengan UNIX, bekerja seperti itu - dan entri Windows NT ACL memiliki bit izin yang serupa.
2

Interpretasi izin ini tanggal kembali ke sistem file Unix awal. Pada awalnya, hanya ada file. (Ya, dan perangkat, dan pipa, dan ... tapi saya mencoba untuk menceritakan sebuah kisah di sini, tidak 100% benar-benar akurat; selain itu, semuanya berlaku untuk perangkat dan pipa dan yang lainnya karena semuanya adalah file, bahkan direktori).

Direktori hanyalah file yang digunakan sistem file untuk menyimpan metadata yang menjelaskan susunan direktori, dan file yang dikandungnya. Setiap file dalam direktori dijelaskan oleh struktur data sederhana yang berisi ruang untuk nama file (aslinya 14 karakter, IIRC) bersama dengan nomor inode tempat data disimpan, ukuran file, stempel waktu, dan kata perizinan . Setiap direktori dimulai dengan dua entri bernama .dan .., yang pertama menunjuk pada inode dari direktori ini, dan yang kedua pada inode dari direktori induknya.

Kata izin memiliki sembilan bit untuk menjelaskan perlakuan pemilik, anggota lain dari kelompok yang sama, dan dunia. Tiga bit untuk setiap flag apakah pengguna yang relevan dapat membaca, menulis, atau mengeksekusi file. (Anda mungkin memperhatikan bahwa ada lima bit lagi dalam kata perizinan 16-bit yang saya abaikan. Itu akhirnya mendapatkan makna yang diberikan tetapi itu tidak relevan dengan bagian cerita ini.) (Juga, interpretasi dari sembilan ini bit tetap hampir sama di semua keturunan Unix awal, termasuk Linux.)

Jadi, jika sebuah direktori benar-benar hanya jenis file khusus dan dijelaskan oleh entri di beberapa direktori, itu jelas juga memiliki bit izin, dan bit-bit itu mungkin berarti sesuatu. Tetapi pertanyaannya adalah apa, tepatnya. Cara termudah untuk memberikan makna pada bit-bit itu adalah dengan tidak mengubah apa yang mereka maksud sejak awal. Dan pada dasarnya itulah yang dilakukan.

Jadi, bit baca berarti bahwa pengguna dapat membaca direktori itu sendiri. Itu secara klasik memberi pembaca akses ke nama file, stempel waktu, ukuran, dan nomor inode dari setiap file data. Khususnya, dengan rset yang dapat Anda gunakan lsuntuk melihat nama semua file di direktori, tetapi itu tidak cukup untuk membuka (atau menggunakan cara apa pun) salah satu file yang terdaftar.

Bit eksekusi berarti pengguna dapat "mengeksekusi" direktori. Karena direktori khusus, mengeksekusi benar-benar berarti mencari entri berdasarkan nama dan menggunakannya. Itu berarti Anda dapat mencoba membuka file jika xsudah diatur, tetapi tanpa rAnda tidak dapat menemukan namanya. Tentu saja, izin file yang diminta juga mempengaruhi akses, jadi bahkan dengan xpada direktori Anda tidak akan dapat membaca file kecuali itu juga menawarkan Anda r.

Bit tulis berarti bahwa pengguna dapat menulis ke direktori, tetapi secara alami hanya dimediasi oleh sistem file itu sendiri. Itu berarti bahwa dengan wset Anda dapat membuat file baru di direktori itu, atau mengedit entri direktori dari file yang ada. Tetapi tanpa xset, Anda tidak dapat benar-benar menggunakan file apa pun, dan tanpa rAnda tidak dapat melihatnya.

Ketika model identitas pengguna yang lebih rumit telah berevolusi di Unix dan turunannya, deskripsi dasar yang sama ini berhasil tidak berubah.

Singkatnya, rberarti Anda dapat melihat kontennya, xberarti Anda dapat menggunakannya, dan wberarti Anda dapat memodifikasinya bahkan untuk direktori.

RBerteig
sumber
Saya kira Anda bisa menjelaskan mode_tsedikit lebih banyak (terutama bagian di mana izin dan tipe file disimpan dalam bidang 32bit yang sama)
SaveTheRbtz
1
Saya aktif sebagai pengguna dan pengembang unix di tahun 80-an. Saya tidak mencoba untuk menceritakan kisah lengkap tentang apa yang benar hari ini sebanyak memasukkannya ke dalam konteks sejarah, dan mengekspos hiburan saya bahwa teka-teki yang sama yang saya hadapi ketika pertama kali belajar unix dapat ditanyakan hari ini, dan dijawab secara substansial oleh penjelasan yang sama yang saya dapatkan dari guru-guru setempat sekitar tahun 1983. Semakin banyak hal berubah, semakin mereka tetap sama ....
RBerteig