Hubungan apa yang mengikat ACL mask dan izin grup standar pada file?

17

Pada awalnya saya membuat file dan memeriksa izin standar dan entri ACL:

$ touch file; ls -l file; getfacl file
-rw-r--r-- 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
other::r--

Lalu saya mengatur topeng ACL pada file dan kembali memeriksa izin standar dan entri ACL:

$ setfacl -m mask:rwx file
$ ls -l file; getfacl file
-rw-rwxr--+ 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
mask::rwx
other::r--

Perhatikan bahwa bersama dengan izin grup standar ACL mask pada file juga berubah.

  1. Koneksi apa yang ada antara ACL mask dan izin grup standar?
  2. Apa alasan untuk memasangkan izin ACL mask dan grup file? Logika apa yang ada di baliknya?

Distribusi yang dimaksud adalah Debian Linux 7.6 dan CentOS 7


EDIT

Pada titik ini saya hanya ingin membagikan beberapa temuan saya yang saya temukan ketika meneliti hubungan antara izin grup file standar dan topeng ACL. Berikut adalah pengamatan empiris yang saya temukan:

  1. Masker ACL dapat diubah:

    1. dengan langsung mengaturnya dengan setfacl -m m:<perms>perintah;
    2. dengan mengubah izin grup file dengan chmodperintah (jika ACL mask sudah ada; mungkin tidak ada karena opsional jika tidak ada nama pengguna atau grup ACL izin pada file);
    3. dengan menambahkan entri nama pengguna atau ACL grup (mask akan dihitung ulang secara otomatis).
  2. Mask akan memberlakukan hak akses maksimum (jika ada entri ACL dengan izin hadir yang melebihi izin mask ACL) hanya jika mask diatur secara langsung oleh setfacl atau dengan modifikasi izin grup file dengan chmod (tidak dihitung secara otomatis). Setiap perubahan pada entri ACL akan memicu perhitungan ulang ACL mask otomatis dan secara efektif mematikan "mode penegakan".

  3. Ada beberapa efek samping yang secara implisit mempengaruhi izin grup file standar saat menggunakan ACL:

    1. Entri yang dimasukkan pengguna atau grup ACL yang diterapkan ke file dapat mengubah topeng ACL (meningkatkan izinnya) dan karenanya izin grup file yang efektif. Misalnya, jika Anda, sebagai pemilik file, memiliki izin "rw-r - jim students" di atasnya dan Anda juga memberikan izin rw kepada pengguna "jack", Anda juga secara implisit akan memberikan izin rw kepada siapa pun. dari kelompok "siswa".
    2. Lebih keras (kurang izin) ACL mask dapat secara permanen menghapus izin grup file standar yang sesuai. Misalnya jika Anda memiliki file dengan izin grup file standar rw dan Anda menerapkan masker ACL hanya-baca ke file itu, izin grupnya akan berkurang menjadi hanya-baca. Kemudian jika Anda menghapus semua entri ACL yang diperluas (dengan setfacl -bperintah), izin grup akan tetap hanya-baca. Ini hanya berlaku untuk ACL mask yang lebih ketat, ACL mask yang lebih lembut (lebih banyak izin) tidak secara permanen mengubah izin grup file asli setelah dihapus.
golem
sumber
Saya pikir Anda bisa mengambil halaman berikut untuk referensi, www-uxsup.csx.cam.ac.uk/pub/doc/suse/sles9/adminguide-sles9/…
kundy

Jawaban:

11

Tidak masuk akal jika izin file unix tidak setuju dengan entri acl dan sebaliknya. Dengan demikian, halaman manual ( acl(5)) mengatakan apa yang Anda minta:

KORESPONDEN ANTARA MASUK ASLI DAN BIT PERIZINAN FILE

Izin yang ditentukan oleh ACL adalah superset dari izin yang ditentukan oleh bit izin file.

Ada korespondensi antara pemilik file, grup, dan izin lainnya dan entri ACL spesifik: izin pemilik sesuai dengan izin entri ACL_USER_OBJ. Jika ACL memiliki entri ACL_MASK, izin grup sesuai dengan izin entri ACL_MASK. Kalau tidak, jika ACL tidak memiliki entri ACL_MASK, izin grup sesuai dengan izin entri ACL_GROUP_OBJ. Izin lainnya sesuai dengan izin entri ACL_OTHER_OBJ.

Pemilik file, grup, dan izin lainnya selalu cocok dengan izin entri ACL yang sesuai. Modifikasi bit izin file menghasilkan modifikasi entri ACL terkait, dan modifikasi entri ACL ini menghasilkan modifikasi bit izin file.

Tambahan dalam menanggapi diskusi:

Apa alasan untuk memasangkan izin ACL mask dan grup file? Logika apa yang ada di baliknya?

Penjelasan yang bagus ada di sini . Intinya topeng adalah

[...] batas atas dari izin yang akan diberikan oleh setiap entri dalam kelas grup.

Properti batas atas ini memastikan bahwa aplikasi POSIX.1 yang tidak mengetahui ACL tidak akan secara tiba-tiba dan tidak terduga mulai memberikan izin tambahan begitu ACL didukung.

Dalam ACL minimal, izin kelas grup identik dengan izin grup pemilik. Dalam ACL yang diperluas, kelas grup dapat berisi entri untuk pengguna atau grup tambahan. Ini menghasilkan masalah: beberapa entri tambahan ini mungkin berisi izin yang tidak terkandung dalam entri grup yang memiliki, sehingga izin masuk grup yang dimiliki mungkin berbeda dari izin kelas grup.

Masalah ini dipecahkan berdasarkan keutamaan dari entri topeng. Dengan ACL minimal, izin kelas grup memetakan ke izin masuk grup yang dimiliki. Dengan ACL yang diperluas, izin kelas grup memetakan ke izin entri mask, sedangkan entri grup yang memiliki masih menentukan izin grup yang memiliki. Pemetaan izin kelas grup tidak lagi konstan.

countermode
sumber
Apa yang Anda katakan berlaku untuk output getfacl berikut: user :: rw- group :: r-- other :: r-- . 3 baris itu akan berubah jika Anda menggunakan chmodperintah untuk mengubah izin standar dan sebaliknya ketika Anda mengeksekusi, katakanlah getfacl -m u:someuser:rwx, izin file standar untuk pemilik file akan berubah dan perubahan akan tercermin dalam ls -loutput. Itu semua benar, tetapi saya tidak melihat bagaimana itu menjawab pertanyaan saya
golem
lihat hasil edit saya untuk cerita selengkapnya
countermode
1
Jawaban Anda yang diedit mengatakan bahwa ada sambungan antara izin grup file dan ACL mask sesuai desain. Pertanyaan tentang apa alasan untuk memasangkan izin ACL mask dan grup file masih aktif. Logika apa yang ada di baliknya tidak jelas bagi saya.
golem
1
Mungkin ada akal. Tergantung pada definisi dan implementasinya. Menurut definisi, file Linux ACL, seperti yang diterapkan sekarang, adalah superset dari izin file standar, yang termasuk di dalamnya. Jadi mereka tidak bisa "bertentangan". Berikut ini adalah use case. Jika saya menetapkan izin rwx ke "testuser" untuk file dengan -rw-r--r-- 1 user userizin awal , yang bernama ACL pengguna akan diterima, dan ACL mask (bersama dengan izin grup file) akan diubah menjadi rwx juga. --- [lihat komentar selanjutnya sebagai kelanjutan]
golem
1
Sekarang apakah izin rwx "testuser" bertentangan dengan -rw-rwxr-- 1 user userizin baru file atau tidak? Bagaimana Anda menentukan kontradiksi? Dengan membandingkan izin ACL penguji dengan izin grup file standar? Logika apa yang mengarahkan Anda untuk membandingkan izin grup dengan izin pengguna? Bukankah mereka entitas yang berbeda? Bukankah itu berlawanan dengan intuisi? Mungkin jelas bagi Anda, tetapi saya masih berjuang untuk memahami itu.
golem
3

Saya akhirnya mengerti apa yang sebenarnya terjadi ketika saya melihat tautan ini Menangani ACL

Secara khusus, topeng itu pada dasarnya menggantikan, dan berfungsi untuk menggantikan PENGGUNA NAMED dan semua izin GROUP. Ini berarti jika Anda:

  1. menyesuaikan topeng, Anda mengubah izin grup maks,
  2. jika Anda mengubah salah satu izin grup dengan hadiah topeng, topeng tersebut mengambil izin grup maksimal semua izin grup
  3. grup yang membaca, menulis, dan mengeksekusi izin ditentukan berdasarkan topeng, jika ada

masukkan deskripsi gambar di sini

Semoga ini bisa membantu.

jisnow
sumber
Ada penjelasan yang sangat bagus tentang mask pada halaman yang Anda referensikan (kutipan dari bagian 27.3.3. Direktori dengan ACL Akses ): mask mendefinisikan izin akses efektif maksimum untuk semua entri di kelas grup. Ini termasuk nama pengguna, grup bernama, dan grup pemilik. .
patryk.beza
-1

Logika apa yang ada di baliknya?

Logikanya benar-benar rusak dan karena itu POSIX ACL murni dan tidak berguna.

Jika mereka bertujuan untuk menjaga kompatibilitas dengan aplikasi yang tidak memiliki gagasan tentang ACL kecuali model "ugo" UNIX primitif standar , mereka sebenarnya gagal pada awalnya karena sekarang setiap aplikasi yang menghapus izin grup secara efektif menarik akses yang ditambahkan oleh ACL.

poige
sumber