linux / setfacl - Atur semua file / direktori saat ini / yang akan datang dalam direktori induk ke 775 dengan pemilik / grup yang ditentukan

42

Saya memiliki direktori bernama "anggota" dan di bawahnya ada folder / file. Bagaimana saya bisa secara rekursif mengatur semua folder / file saat ini dan yang akan dibuat di sana secara default memiliki 775 izin dan masing-masing dimiliki oleh pemilik / grup, tidak ada / admin? Saya mengaktifkan ACL, dipasang, tetapi sepertinya tidak bisa mendapatkan perintah setfacl untuk melakukan ini dengan benar. Adakah yang tahu bagaimana mencapainya?

Maverick
sumber

Jawaban:

62

Saya benar-benar menemukan sesuatu yang sejauh ini melakukan apa yang saya minta, berbagi di sini sehingga siapa pun yang mengalami masalah ini dapat mencoba solusi ini:

sudo setfacl -Rdm g:groupnamehere:rwx /base/path/members/
sudo setfacl -Rm g:groupnamehere:rwx /base/path/members/

R bersifat rekursif, yang berarti segala sesuatu di bawah direktori itu akan memiliki aturan yang diterapkan padanya.
d adalah default, yang berarti untuk semua item masa depan yang dibuat di bawah direktori itu, aturan ini berlaku secara default. m diperlukan untuk menambah / memodifikasi aturan.

Perintah pertama, adalah untuk item baru (maka d), perintah kedua, untuk item lama / yang ada di bawah folder. Semoga ini bisa membantu seseorang karena hal ini agak rumit dan tidak terlalu intuitif.

Maverick
sumber
2
Ini persis apa yang saya butuhkan untuk mendapatkan pemilik direktori kakek-nenek untuk dapat dengan benar mengubah isi direktori cucu baru.
Joost
Jika Anda adalah satu-satunya pengguna Rpi Anda, Anda dapat mengganti g: groupname dengan pi: pi atau hanya pi
SDsolar
Anda dapat menentukan untuk pengguna, grup, dan lainnya dalam satu baris, mis -Rdm g:groupnamehere:rwx, -Rdm u:groupnamehere:rwx.
user2340939
18

Pergi dengan jawaban yang Anda terima ...

Anda dapat menggabungkan perintah-perintah itu bersama sebagai:

sudo setfacl -Rm d:g:groupnamehere:rwx,g:groupnamehere:rwx /base/path/members/
Joshua
sumber
Itu keren. Kenapa Anda mengatur d:pada item pertama daripada -Rmd? Saya dapat mengatakan bahwa parameter kedua tidak boleh default- hanya aneh bagaimana linux menerimanya kepada saya.
JREAM
1
@JREAM: Linux (sebenarnya getopt_long) mengirimkan seluruh argumen untuk pilihan-m yang diurai dengan tangan oleh setfacl, memisahkan dengan koma argumen berlalu. Mereka ditambahkan ke daftar tertaut yang dilingkarkan di akhir ketika benar-benar mengubah ACL.
Benoit Duffez
2

setfacl di linux memiliki -ddan -kpilihan untuk memanipulasi izin default yang mungkin apa yang Anda cari (lihat manusia untuk info lebih lanjut).

peterph
sumber
1

Sangat mudah untuk secara rekursif mengatur izin UNIX sederhana sesuai permintaan pengguna yang diotorisasi secara tepat, izin direktori dan file. Tidak mungkin untuk memaksakan ini secara otomatis.

Anda bisa memberi tahu pengguna untuk menggunakan set umask dari 0002, dan itu membantu untuk membuat file baru di 0775 (tergantung pada aplikasi). Tapi itu tidak bisa ditegakkan.

Pemahaman saya adalah bahwa ACL tidak diwariskan pada sistem UNIX / Linux. Mereka ditetapkan berdasarkan permintaan.

Adapun kepemilikan file / direktori, Anda kurang beruntung di sini.

Adapun kepemilikan grup file / direktori, dengan mengatur bit set-gid direktori (yaitu g + s pada DIRECTORIES), ini menyebabkan kepemilikan grup diwarisi.

Apa yang telah saya lakukan dalam situasi seperti ini adalah menjalankan skrip root cron periodik yang mengatur ulang izin / kepemilikan yang tidak sesuai dengan standar dalam direktori tersebut.

Proses lain (TIDAK DIANJURKAN) adalah membuat id pengguna yang sama digunakan saat mengerjakan file-file ini. Ini dapat dilakukan oleh pengguna yang masuk ke sistem di bawah UID-nya sendiri, dan kemudian menggunakan sudo atau su untuk dijalankan sebagai id. Ini masih belum 100% terutama tentang ACL dan bit izin.

mdpc
sumber