Bagaimana cara saya memberikan izin berbeda untuk setiap pengguna?

11

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.

trueCamelType
sumber
8
Untuk perincian izin semacam itu, Anda perlu memanfaatkan daftar kontrol akses (ACL). Anda dapat menemukan Tutorial cepat di sini . Meskipun kata hati-hati, setelah Anda memulai jalur ACL bukannya izin, itu adalah lereng yang sangat licin dan hal-hal menjadi rumit sangat cepat dengan beberapa konsekuensi yang tidak diinginkan pada akhirnya.
MelBurslan

Jawaban:

19

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 setfaclperintah dan dibaca dengangetfacl

$ setfacl -m u:root:r-- file.txt
$ setfacl -m u:bin:-wx file.txt 
$ setfacl -m u:lp:--x file.txt 
$ getfacl file.txt
# file: file.txt
# owner: sweh
# group: sweh
user::rw-
user:root:r--
user:bin:-wx
user:lp:--x
group::r--
mask::rwx
other::r--

Anda dapat dengan mudah mengetahui apakah suatu file memiliki ACL dengan melihat lsoutput:

$ ls -l file.txt
-rw-rwxr--+ 1 sweh sweh 0 Jul 26 10:33 file.txt

Di +akhir izin menunjukkan ACL.

Stephen Harris
sumber
2

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 maskpada getfacl), tetapi setfaclharus menghadapinya jika Anda menambahkan izin.

Tetapi dalam beberapa kasus Anda perlu bertanya apakah set izin masuk akal.

Saya memiliki 3 pengguna dengan izin yang diinginkan ini ....
- user1 rwx
- user2 rw_
- user3 r__

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 -wxdan user5 dengan --xtidak 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 xbit, 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.

ilkkachu
sumber
Jika pengguna hanya dapat menulis ke sistem file yang dipasang tanpa izin eksekusi, ia tidak dapat menjalankan salinan, bahkan jika ia dapat mengeksekusi dokumen asli jika izin yang sesuai akan ditetapkan. Eksekusi-saja mungkin masuk akal jika Anda ingin mencegah mereka mencari exploit. -wxitu pasti aneh.
celtschk
1
Beberapa sistem memiliki mekanisme yang hanya memperbolehkan penambahan. Linux 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 .
Acak832