Masalahnya adalah, saya selalu berpikir izin ini runtuh satu sama lain, dimulai dengan yang paling umum (lainnya -> grup -> pengguna).
Jika itu masalahnya maka izin "lain" akan berlaku untuk semua orang.
Dengan kata lain, jika o = rwx siapa yang peduli apa pengajuan untuk grup dan pengguna?
Itu berbeda dari kalimat Anda sebelumnya. Di sini Anda menyiratkan bahwa izin diurutkan bersama, mis. Bahwa userX memiliki izin baca jika userX memiliki file dan file tersebut dapat dibaca pengguna, atau jika grup yang dimiliki penggunaX memiliki file dan file tersebut grup -baca, atau jika file tersebut dapat dibaca orang lain. Tapi itu bukan cara kerjanya. Sebenarnya, ini o=rwx
berarti bahwa rwx
izin berlaku untuk orang lain, tetapi tidak mengatakan apa pun tentang entitas yang bukan milik orang lain.
Pertama, tidak masalah secara langsung grup mana yang dimiliki pengguna. Kernel tidak memiliki gagasan tentang pengguna milik grup. Apa yang dipertahankan oleh kernel adalah, untuk setiap proses, ID pengguna ( UID efektif ) dan daftar ID grup (GID efektif dan GID pelengkap). Grup ditentukan pada waktu login, oleh proses login - ini adalah proses login yang membaca database grup (mis /etc/group
.). ID pengguna dan grup diwarisi oleh proses anak¹.
Ketika suatu proses mencoba membuka file, dengan izin Unix tradisional:
- Jika pengguna yang memiliki file adalah UID efektif proses, maka bit izin pengguna digunakan.
- Jika tidak, jika grup pemilik file adalah GID efektif proses atau salah satu ID grup pelengkap proses, maka bit izin grup digunakan.
- Jika tidak, bit izin lainnya digunakan.
Hanya satu set bit rwx yang pernah digunakan. Pengguna lebih diutamakan daripada grup yang lebih diutamakan daripada yang lain. Ketika ada daftar kontrol akses , algoritma yang dijelaskan di atas digeneralisasi:
- Jika ada ACL pada file untuk UID efektif proses, maka itu digunakan untuk menentukan apakah akses diberikan.
- Jika tidak, jika ada ACL pada file untuk GID efektif proses atau salah satu ID grup pelengkap proses, maka bit izin grup digunakan.
- Jika tidak, bit izin lainnya digunakan.
Lihat juga Precedence ACLS ketika pengguna menjadi bagian dari beberapa grup untuk detail lebih lanjut tentang bagaimana entri ACL digunakan, termasuk efek dari mask.
Dengan demikian -rw----r-- alice interns
menunjukkan file yang dapat dibaca dan ditulis oleh Alice, dan yang dapat dibaca oleh semua pengguna lain kecuali magang. File dengan izin dan kepemilikan ----rwx--- alice interns
hanya dapat diakses oleh peserta magang kecuali Alice (apakah ia magang atau tidak). Karena Alice dapat menelepon chmod
untuk mengubah izin, ini tidak memberikan keamanan apa pun; ini kasus tepi. Pada sistem dengan ACL, mekanisme umum memungkinkan penghapusan izin dari pengguna tertentu atau kelompok tertentu, yang kadang-kadang berguna.
Menggunakan satu set bit, alih-alih semua bit untuk setiap tindakan (baca, tulis, jalankan), memiliki beberapa keuntungan:
- Ini memiliki efek yang berguna untuk memungkinkan penghapusan izin dari sekelompok pengguna atau grup, pada sistem dengan ACL. Pada sistem tanpa ACL, izin dapat dihapus dari satu grup.
- Lebih mudah untuk diimplementasikan: periksa satu set bit, daripada menggabungkan beberapa set bit bersama-sama.
- Lebih mudah untuk menganalisis izin file, karena lebih sedikit operasi yang terlibat.
¹ Mereka dapat berubah saat proses setuid atau setgid dijalankan. Ini tidak terkait dengan masalah yang dihadapi.