Menggunakan setfacl untuk memungkinkan anggota grup menulis ke file apa pun di direktori

12

Saya ingin menggunakan setfacl sehingga siapa pun dalam 'aplikasi' grup dapat mengedit file apa pun yang terdapat dalam / usr / local / users / app terlepas dari apa yang dikatakan izin UNIX tradisional. Saya punya dua pengguna john dan ben. Saya mencoba mengikuti instruksi dari pertanyaan lain , tetapi John tidak dapat menulis ke beberapa file. Sepertinya ini karena topeng acl. Namun, saya telah menetapkan masker default pada direktori rwx, jadi bukankah seharusnya file di dalamnya mewarisi itu ketika dibuat?

Misalnya john tidak dapat menulis ke file di bawah ini, tetapi ia adalah anggota 'aplikasi' grup yang telah menulis acl pada file tersebut sehingga saya terkejut ia tidak dapat mengedit file.

ben@app1:/usr/local/users$ ls -la app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
-rw-r--r--+ 1 ben users 38326 Apr  2 10:21 app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar

ben@app1:/usr/local/users/app$ getfacl app-1.0-SNAPSHOT/lib/
# file: app-1.0-SNAPSHOT/lib/
# owner: ben
# group: users
user::rwx
group::rwx          #effective:r-x
group:app:rwx       #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:group::rwx
default:group:app:rwx
default:mask::rwx
default:other::r-x

ben@app1:/usr/local/users$ getfacl app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
# file: app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
# owner: ben
# group: users
user::rw-
group::rwx          #effective:r--
group:app:rwx       #effective:r--
mask::r--
other::r--
Ben McCann
sumber

Jawaban:

7

Anda akan melihat komentar "efektif" yang diberikan getfacl kepada Anda. Masalahnya adalah izin menghitung sehingga "aplikasi" tidak mendapatkan set bit tulis. Itu terjadi karena mask pada file diatur ke read-only. Topeng digunakan untuk membatasi jumlah izin yang mungkin bisa diberikan pada file atau direktori tertentu.

Contoh mengapa Anda menginginkan perilaku ini akan seperti jika Anda tahu file tersebut secara sah membutuhkan pengguna / grup yang berbeda untuk memiliki akses ke sana, tetapi karena beberapa alasan hal menjadi semakin rumit dengan izin dan Anda menginginkan cara untuk mengatakan "Apa pun yang lain izin default diatur ke, apa pun keanggotaan grup mereka, atau setfacl rekursif apa pun yang akan dieksekusi nanti, PASTI JANGAN MEMBERIKAN INI ! " Pengguna yang memiliki memiliki status khusus di dunia POSIX, memiliki hak yang tidak dimiliki pengguna lain, seperti kemampuan untuk menjadi non-root dan mengubah izin pada file dan memiliki haknya tidak dibatasi oleh mask (yang akan menjadi sia-sia karena hak istimewa pertama yang diberikan sistem kepada mereka). Inilah sebabnya mereka tetap mendapatkan rwx meskipun mask dibatasi.

Untuk menjawab pertanyaan spesifik Anda : tambahkan bit tulis ke mask pada file dan coba lagi sebagai johnpengguna.

di sini adalah versi baris perintah dari penjelasan di atas, perhatikan bagaimana perubahan "efektif" hak ketika semua saya memodifikasi adalah topeng.

Bratchley
sumber
Terima kasih. Saya sangat menghargai tanggapannya. Apakah mungkin file baru dibuat dengan topeng rwx default? Saya telah mengedit pertanyaan saya dengan beberapa detail lagi.
Ben McCann
Ya topeng adalah salah satu kategori (seperti pengguna dan grup) yang Anda dapat mengatur ACL default. Topeng default harus mewarisi ke subdirektori dan berlaku untuk file. CONTOH: setfacl -md: m :: rwx / path / to / Dir
Bratchley
ACL default mewarisi ke subdirektori, tetapi tidak ke file, membuat ACL benar-benar tidak berguna :-(
Ben McCann
Hanya untuk memastikan kita berbicara tentang hal yang sama, Anda berbicara tentang acl default untuk entri topeng? Inilah yang saya dapatkan dalam tes.
Bratchley
Saya juga mengulangi pengujian di atas untuk file baru di / testBed setelah mengubah topeng efektif pada direktori induk dan mendapatkan hasil yang sama (entri masker default diterapkan ke file dan bukan topeng efektif orangtua).
Bratchley
0

Itu tidak mungkin. cp, rsync, dll. membuat file yang mengabaikan ACL default

Mengapa cp tidak menghormati ACL?

Ben McCann
sumber
salah Pengguna sedang menjalankan hal topeng yang sama dengan yang Anda jalankan sebelumnya dan mendapat tanggapan yang salah dari orang lain. Tidak tergantung pada "cp" atau utilitas lain untuk mengabaikan entri ACL default, yang terjadi pada tingkat sistem file ketika cp pergi untuk membuat file. Alat ini memiliki opsi untuk mengeluarkan pemanggilan sistem untuk menghapus / menambahkan ACL yang diperlukan tetapi harus berupaya untuk melakukannya.
Bratchley
Persetan dengan itu, Anda dapat melihat entri ACL yang mereka bicarakan itu hanya izin efektif yang mereka harapkan tidak ada. Itu adalah kesempatan yang sempurna untuk mengatakan "hei Bung, periksa topengmu."
Bratchley
1
Sebenarnya, saya mengambil kembali sepertinya EvilRyry memposting tentang topeng dan OP hanya menanggapi kembali dengan "itu tidak berhasil" kemudian diposting keluaran getfacl yang tampaknya menunjukkan bahwa "felles" memang mendapatkan rwx pada file. Pada tingkat ini, jawaban dengan suara tertinggi tidak sesuai dengan pengalaman pribadi saya dan apa yang saya ilustrasikan di sini dengan contoh-contoh perintah.
Bratchley