Jadi, saya sudah menggunakan Linux selama beberapa tahun sekarang, dan saya benar-benar harus tahu jawaban ini, tetapi saya kesulitan menemukannya. Secara khusus saya telah menggunakan distro berbasis Debian .... sebagian besar Ubuntu.
Jika saya memiliki server, yang memiliki lebih dari tiga pengguna, bagaimana cara menetapkan serangkaian izin yang berbeda untuk file untuk setiap pengguna.
Sebagai contoh:
Jika saya memiliki file dengan izin dan kepemilikan ini:
rwx rw_ r__ user1:group1 file1.txt
dan saya memiliki 3 pengguna dengan izin yang diinginkan ini ....
- user1 rwx
- user2 rw_
- user3 r__
Yang harus saya lakukan adalah memiliki user1 memiliki file, user2 berada di group1 , dan user3 tidak dapat keduanya - benar?
Tapi, bagaimana jika saya memiliki user4 dan user5 .
- user4 _wx
- user5 __x
Bagaimana saya mengaturnya?
Saya belum pernah melakukan ini sebelumnya, tetapi saya ditanya pertanyaan itu oleh admin Windows, dan jujur saya tidak bisa menjawab.
sumber
Jawaban:
Izin unix tradisional hanya memungkinkan pengguna, grup, izin lainnya seperti yang Anda temukan. Ini dapat menghasilkan beberapa kombinasi canggung yang perlu dibuat ...
Jadi bentuk baru ACL (Access Control Lists) ditempel di. Ini memungkinkan Anda menentukan beberapa pengguna dan beberapa grup dengan izin berbeda. Ini diatur dengan
setfacl
perintah dan dibaca dengangetfacl
Anda dapat dengan mudah mengetahui apakah suatu file memiliki ACL dengan melihat
ls
output:Di
+
akhir izin menunjukkan ACL.sumber
Ya, ACL: s memungkinkan pengaturan hak yang berbeda untuk pengguna atau grup yang berbeda. IIRC, izin grup biasa membatasi serangkaian izin yang dapat dimiliki grup dan pengguna melalui ACL: s (ditampilkan seperti
mask
padagetfacl
), tetapisetfacl
harus menghadapinya jika Anda menambahkan izin.Tetapi dalam beberapa kasus Anda perlu bertanya apakah set izin masuk akal.
Anda dapat menerapkan ini dengan ACL: s, atau (kurang-lebih) dengan izin Unix yang biasa dengan menjadikan pengguna1 pemilik file, pengguna2 anggota grup, dan membiarkan orang lain, termasuk pengguna3 memiliki akses baca. Meskipun demikian semua orang (dengan akses ke direktori) juga akan memiliki akses baca.
Mari kita pertimbangkan arti dari izin itu. Anda memiliki satu pengguna yang bisa membaca, dan yang lain bisa membaca dan menulis. Itu sangat biasa. Tidak satu pun dari ini memiliki akses untuk mengeksekusi file, tetapi kemudian pengguna ketiga seharusnya dapat melakukan itu juga.
Itu tidak masuk akal dalam pikiran saya. Setiap pengguna yang dapat membaca file, dapat membuat salinan (*), menandainya dapat dieksekusi, dan menjalankannya, tanpa akses untuk mengeksekusi file asli. Satu-satunya situasi yang masuk akal untuk mengeksekusi akses untuk beberapa pengguna tetapi tidak untuk yang lain, adalah ketika executable tersebut meningkatkan hak istimewa melalui suid. Tetapi jika itu masalahnya, Anda juga tidak harus memiliki pengguna lain dengan akses tulis ke file tersebut.
Dalam arti yang sama, user4 dengan
-wx
dan user5 dengan--x
tidak masuk akal bagi saya. Akses hanya menulis mungkin masuk akal jika ada kemungkinan hanya memperbolehkan penambahan , tetapi sistem perizinannya tidak terlalu bagus.(* kecuali mereka tidak bisa menulis di mana pun)
Padahal, jika kita menghapus persyaratan aneh untuk
x
bit, kita memiliki file di mana user1 dan user2 harus memiliki akses tulis, dan user3 harus memiliki akses baca. Satu penulis dan banyak pembaca akan mudah dengan model tradisional, tetapi kasus ini akan memerlukan trik untuk menggabungkan izin file dengan permissons dari direktori yang berisi. Untungnya, dalam banyak kasus satu pengguna dengan lebih banyak izin sudah cukup.Tanpa persyaratan pada bit eksekusi, ini seperti kasus untuk menggunakan ACL: s. Tetapi dengan itu, contoh khusus ini tampaknya agak berbelit-belit bagi saya.
sumber
-wx
itu pasti aneh.chattr +a
, misalnya. Dan bahkan tanpa sistem khusus apa pun, Anda dapat membuat file menjadi FIFO.--x
, dan juga ekstensi-wx
, masuk akal bagi saya untuk direktori .