Saya rasa saya lebih mengerti bagaimana izin file bekerja di Linux. Namun, saya tidak begitu mengerti mengapa mereka dibagi menjadi tiga level dan tidak menjadi dua.
Saya ingin menjawab masalah berikut:
- Apakah ini desain yang disengaja atau patch? Yaitu - apakah izin pemilik / grup dirancang dan dibuat bersama dengan beberapa alasan atau apakah mereka datang satu demi satu untuk menjawab suatu kebutuhan?
- Apakah ada skenario di mana pengguna / grup / skema lain berguna tetapi grup / skema lainnya tidak cukup?
Jawaban untuk yang pertama harus mengutip buku teks atau papan diskusi resmi.
Use case yang saya pertimbangkan adalah:
- file pribadi - sangat mudah diperoleh dengan membuat grup per pengguna, sesuatu yang sering dilakukan seperti pada banyak sistem.
- memungkinkan hanya pemilik (mis. layanan sistem) untuk menulis ke file, hanya memperbolehkan grup tertentu untuk membaca, dan menolak semua akses lainnya - masalah dengan contoh ini adalah bahwa begitu persyaratan untuk sebuah grup memiliki akses tulis, pengguna / group / lainnya gagal dengan itu. Jawaban untuk keduanya menggunakan ACL, dan tidak membenarkan, IMHO, keberadaan izin pemilik.
NB Saya telah memperbaiki pertanyaan ini setelah pertanyaan ditutup di superuser.com .
EDIT dikoreksi "tetapi skema grup / pemilik tidak akan cukup" menjadi "... grup / lainnya ...".
linux
permissions
Yuval
sumber
sumber
devs
grup memungkinkan untuk ini.foo
menjadi anggota grupfoo
dandevs
, dan menetapkan file yang dibagikan kedev
grup dan file pribadi kefoo
grupJawaban:
Sejarah
Awalnya, Unix hanya memiliki izin untuk pengguna yang memiliki, dan untuk pengguna lain: tidak ada grup. Lihat dokumentasi Unix versi 1, khususnya
chmod(1)
. Jadi kompatibilitas ke belakang, jika tidak ada yang lain, memerlukan izin untuk pengguna yang memiliki.Grup datang kemudian. ACL yang memungkinkan melibatkan lebih dari satu grup dalam izin file datang jauh kemudian.
Kekuatan ekspresif
Memiliki tiga izin untuk file memungkinkan izin yang lebih halus daripada hanya memiliki dua, dengan biaya yang sangat rendah (jauh lebih rendah daripada ACL). Misalnya, file dapat memiliki mode
rw-r-----
: hanya dapat ditulis oleh pengguna yang memiliki, dapat dibaca oleh grup.Kasus penggunaan lain adalah executable setuid yang hanya dapat dieksekusi oleh satu grup. Misalnya, program dengan mode yang
rwsr-x---
dimiliki olehroot:admin
hanya memungkinkan pengguna dalamadmin
grup untuk menjalankan program itu sebagai root."Ada izin yang tidak bisa diungkapkan oleh skema ini" adalah argumen yang buruk untuk menentangnya. Kriteria yang berlaku adalah, apakah ada cukup banyak kasus yang dapat diungkapkan yang membenarkan biaya? Dalam hal ini, biayanya minimal, terutama mengingat alasan lain untuk pengguna / grup / triptych lainnya.
Kesederhanaan
Memiliki satu grup per pengguna memiliki overhead manajemen yang kecil tetapi tidak signifikan. Adalah baik bahwa kasus yang sangat umum dari file pribadi tidak tergantung pada ini. Aplikasi yang membuat file pribadi (misalnya program pengiriman email) tahu bahwa semua yang perlu dilakukan adalah memberikan file mode 600. Tidak perlu menelusuri database grup untuk mencari grup yang hanya berisi pengguna - dan apa yang harus dilakukan jika tidak ada grup seperti itu atau lebih dari satu?
Datang dari arah lain, misalkan Anda melihat file dan Anda ingin mengaudit izinnya (yaitu memeriksa apakah itu yang seharusnya). Ini jauh lebih mudah ketika Anda bisa "hanya dapat diakses oleh pengguna, baik, berikutnya" daripada ketika Anda perlu menelusuri definisi grup. (Kompleksitas semacam itu adalah kutukan sistem yang banyak menggunakan fitur-fitur canggih seperti ACL atau kemampuan.)
Orthogonality
Setiap proses melakukan akses sistem file sebagai pengguna tertentu dan grup tertentu (dengan aturan yang lebih rumit tentang kesatuan modern, yang mendukung kelompok tambahan). Pengguna digunakan untuk banyak hal, termasuk pengujian untuk root (uid 0) dan izin pengiriman sinyal (berbasis pengguna). Ada simetri alami antara membedakan pengguna dan grup dalam izin proses dan membedakan pengguna dan grup dalam izin sistem file.
sumber
Izin pengguna / grup / lainnya pada file adalah bagian dari desain Unix asli.
Ya, hampir setiap skenario yang saya bayangkan di mana keamanan dan kontrol akses penting.
Contoh: Anda mungkin ingin memberikan beberapa binari / skrip pada sistem akses khusus eksekusi
other
, dan tetap membatasi akses baca / tulisroot
.Saya tidak yakin apa yang ada dalam pikiran Anda untuk model izin sistem file yang hanya memiliki izin pemilik / grup. Saya tidak tahu bagaimana Anda bisa memiliki sistem operasi yang aman tanpa adanya
other
kategori.EDIT: Misalkan yang Anda maksud di sini
group/other
adalah izin yang diperlukan, maka saya sarankan mencari beberapa cara untuk mengelola kunci kriptografi atau cara yang hanya pengguna yang tepat dapat mengakses gulungan surat mereka. Ada kasus-kasus di mana kunci pribadi mungkin memerlukanuser:user
kepemilikan yang ketat tetapi kasus-kasus lain di mana masuk akal untuk memberikannyauser:group
kepemilikan.Memang ini mudah dilakukan, tetapi sama mudahnya dengan keberadaan suatu
other
kelompok ...Saya telah menyoroti bagian dari pernyataan Anda yang tampaknya menegaskan kembali poin saya tentang perlunya logis untuk
other
kategori dalam izin sistem file Unix.Desain sistem file seperti yang Anda renungkan (dari apa yang bisa saya katakan) mungkin tidak aman atau sulit digunakan. Unix dirancang oleh beberapa orang yang sangat pintar, dan saya pikir model mereka memberikan keseimbangan keamanan dan fleksibilitas terbaik.
sumber
The UNIX Time-Sharing System
, ditulis oleh Dennis M. Ritchie dan Ken Thomson pada tahun 1974, awalnya, ada 7 bit untuk izin:Also given for new files is a set of seven protection bits. Six of these specify independently read, write, and execute permission for the owner of the file and for all other users.
(Bit ketujuh adalahsetuid
bit).Ya ini adalah desain yang disengaja yang telah hadir di UNIX sejak awal. Itu diimplementasikan pada sistem di mana memori diukur dalam KB dan CPU sangat lambat menurut standar saat ini. Ukuran dan kecepatan pencarian seperti itu penting. ACL akan membutuhkan lebih banyak ruang dan lebih lambat. Secara fungsional,
everyone
grup diwakili oleh bendera keamanan lainnya.Izin yang biasa saya gunakan untuk akses file adalah: (Saya menggunakan nilai bit untuk kesederhanaan dan karena itulah cara saya biasanya mengaturnya.)
600
atau400
: Akses hanya pengguna (dan ya saya memberikan akses hanya baca ke pengguna).640
atau660
: Akses pengguna dan grup.644
,666
atau664
: Pengguna, grup, dan akses lainnya. Skema izin dua tingkat apa pun hanya dapat menangani dua kasus ini. Yang ketiga akan membutuhkan ACL.Untuk direktori dan program yang biasa saya gunakan:
700
atau500
: Akses hanya pengguna750
atau710
: Akses hanya grup755
,777
,775
, Atau751
: Pengguna, kelompok, dan akses lainnya. Komentar yang sama berlaku untuk file.Di atas adalah yang paling umum digunakan, tetapi bukan daftar lengkap pengaturan izin yang saya gunakan. Izin di atas dikombinasikan dengan grup (kadang-kadang dengan bit grup lengket pada direktori) telah mencukupi dalam semua kasus di mana saya mungkin menggunakan ACL.
Seperti yang telah dicatat di atas, sangat mudah untuk mendaftar izin dalam daftar direktori. Jika ACL tidak digunakan, saya dapat mengaudit izin akses hanya dengan daftar direktori. Ketika saya bekerja dengan sistem berbasis ACL, saya merasa sangat sulit untuk memverifikasi atau mengaudit izin.
sumber
Sistem izin pengguna / grup / lainnya dirancang sebelum ACL ditemukan. Ini kembali ke hari-hari awal UNIX, jadi Anda tidak bisa mengatakan masalah harus diselesaikan dengan ACL. Bahkan jika konsep ACL tampak jelas, itu akan melibatkan jumlah overhead tambahan [untuk hari] yang signifikan untuk menyimpan dan mengelola sejumlah variabel informasi izin dengan setiap file, daripada jumlah yang tetap.
Menggunakan ACL untuk semuanya juga berarti Anda tidak memiliki subset yang jelas tentang informasi izin yang dapat ditampilkan "sekilas". Output untuk
ls -l
menunjukkan izin standar (pengguna / grup / lainnya), nama pengguna dan grup, dan notasi tambahan (misalnya+
atau@
tanda) pada entri yang memiliki ACL yang terkait dengannya, semuanya dalam satu baris. Sistem Anda akan membutuhkannya untuk mengidentifikasi kelompok "dua teratas" di ACL untuk menyediakan fungsionalitas yang setara.Sebagai poin tambahan, file masih harus memiliki pemilik dalam model UNIX karena UNIX ACL tidak menyediakan siapa yang diizinkan untuk memodifikasi ACL.
sumber