Bagaimana izin ACL diproses dan dalam urutan apa mereka berlaku untuk tindakan pengguna yang diberikan?

21

CentOS 6.4

Saya mencoba untuk lebih memahami bagaimana aturan sistem file ACL diproses dan dalam urutan apa aturan ACL berlaku.

Sebagai contoh, katakanlah pengguna bob and joe milik grup yang disebut penjualan. Katakan juga saya memiliki dokumen penjualan dengan perincian berikut:

[root@Maui ~]# getfacl /home/foo/docs/foo.txt
getfacl: Removing leading '/' from absolute path names
# file: home/foo/docs/foo.txt
# owner: jane
# group: executives
user:: r--
user:bob:rw-
user:joe:rwx
group:sales:rwx
group::r--
mask::rwx
other::---

Pertanyaan saya adalah, bagaimana izin diproses dalam contoh seperti ini dan hak akses apa yang diutamakan?

Apakah hanya ada pencarian top-down dan aturan apa pun yang cocok terlebih dahulu adalah yang berlaku?

Atau apakah Linux memberlakukan akses berdasarkan pada apa aturan yang paling spesifik untuk pengguna yang dimaksud? Atau mungkin aturan yang paling membatasi dan berlaku diutamakan?

Mike B
sumber

Jawaban:

15

Ini semacam topik yang luas dan sedikit terlalu banyak untuk dibahas di sini. Saya akan merujuk Anda ke Daftar Kontrol Akses POSIX di Linux whitepaper yang disatukan oleh Andreas Grünbacher dari SuSE Labs. Ia melakukan pekerjaan yang cukup baik untuk membahas subjek dan memecahnya sehingga Anda memahami cara kerja ACL.

Contoh anda

Sekarang mari kita lihat contoh Anda dan memecahnya.

  • grup (penjualan)
  • anggota grup penjualan (bob, joe)

Sekarang mari kita uraikan izin pada file /home/foo/docs/foo.txt. ACL juga merangkum izin yang sama yang kebanyakan orang harus terbiasa dengan Unix, terutama Pengguna, Grup, dan bit lainnya. Jadi mari kita tarik dulu.

user:: r--
group::r--
other::---

Ini biasanya akan terlihat seperti ini di ls -l:

$ ls -l /home/foo/docs/foo.txt
-r--r----- 1 jane executives 24041 Sep 17 15:09 /home/foo/docs/foo.txt

Anda dapat melihat siapa yang memiliki file dan apa grup dengan baris-baris ACL ini:

# owner: jane
# group: executives

Jadi sekarang kita masuk ke seluk-beluk ACL:

user:bob:rw-
user:joe:rwx
group:sales:rwx

Ini menunjukkan bahwa pengguna bobmemiliki rw, sementara pengguna joememiliki rwx. Ada juga grup yang juga memiliki rwxkemiripan dengan joe. Izin ini seolah-olah kolom pengguna di kamils -l output memiliki 3 pemilik (jane, bob, dan joe) serta 2 grup (eksekutif & penjualan). Tidak ada perbedaan selain ACL.

Terakhir maskbaris:

mask::rwx

Dalam hal ini kami tidak menutupi apa pun, terbuka lebar. Jadi, jika pengguna bob dan joe memiliki baris berikut:

user:bob:rw-
user:joe:rwx

Maka itu adalah izin efektif mereka. Jika topengnya seperti ini:

mask::r-x

Maka izin efektif mereka akan seperti ini:

user:bob:rw-    # effective:r--
user:joe:rwx    # effective:r-x

Ini adalah mekanisme yang kuat untuk membatasi izin yang diberikan secara grosir.

CATATAN: Pemilik file dan izin lainnya tidak terpengaruh oleh mask hak efektif; semua entri lainnya! Jadi sehubungan dengan topeng, izin ACL adalah warga negara kelas dua jika dibandingkan dengan izin Unix tradisional.

Referensi

slm
sumber