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?
sumber
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
r
set yang dapat Anda gunakanls
untuk 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
x
sudah diatur, tetapi tanpar
Anda tidak dapat menemukan namanya. Tentu saja, izin file yang diminta juga mempengaruhi akses, jadi bahkan denganx
pada direktori Anda tidak akan dapat membaca file kecuali itu juga menawarkan Andar
.Bit tulis berarti bahwa pengguna dapat menulis ke direktori, tetapi secara alami hanya dimediasi oleh sistem file itu sendiri. Itu berarti bahwa dengan
w
set Anda dapat membuat file baru di direktori itu, atau mengedit entri direktori dari file yang ada. Tetapi tanpax
set, Anda tidak dapat benar-benar menggunakan file apa pun, dan tanpar
Anda 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,
r
berarti Anda dapat melihat kontennya,x
berarti Anda dapat menggunakannya, danw
berarti Anda dapat memodifikasinya bahkan untuk direktori.sumber
mode_t
sedikit lebih banyak (terutama bagian di mana izin dan tipe file disimpan dalam bidang 32bit yang sama)