Pertanyaan saya mirip dengan Cara mengatur izin file default pada SEMUA file yang baru dibuat di linux - tetapi berbeda dalam cara-cara penting:
Saya ingin semua file dibuat di (atau disalin ke atau dipindahkan ke) direktori tertentu untuk mewarisi serangkaian izin default yang berbeda dari standar sistem.
Dasar Pemikiran: Direktori yang dimaksud adalah "intake hopper" untuk suatu aplikasi. Pengguna dalam grup menempatkan file dalam direktori, dan aplikasi (berjalan di bawah id pengguna lain dalam grup yang sama) mengambil dan memprosesnya. Masalahnya adalah bahwa pemilik setiap file yang ditempatkan di direktori adalah pengguna yang menempatkannya di sana, dan izin default ke "rw-r - r--"; Saya ingin mengubahnya menjadi "rw-rw ----". Aplikasi yang melakukan asupan tidak dapat melakukannya secara eksplisit, karena id pengguna yang dijalankan oleh aplikasi tidak memiliki file yang dipermasalahkan, dan izin default tidak memungkinkan aplikasi untuk chmod pada file! Jelas, pengguna dapat melakukan chmod setelah meletakkan file di sana - tapi saya ingin menjaga "drop" oleh pengguna sesederhana mungkin. (Orang-orang ini tidak melek linux,
umask tampaknya terlalu kuat: Saya tidak ingin mengatur izin default untuk setiap file yang dibuat oleh pengguna ini - hanya yang dibuat di (atau ditempatkan di) direktori ini.
Mohon saran ... terima kasih!
acl
sebagai opsi dalammount
perintah ketika Anda menambahkannya/etc/fstab
. Itu akan menjadi berlebihan dan ketika Anda menjalankanmount
perintah dalam jawaban Anda, Anda akan mendapatkan output seperti ini:/dev/vda1 on / type ext4 (rw,errors=remount-ro,acl,acl)
(lihatacl,acl
pada akhirnya). Harap perbaiki jika saya tidak salah.Saya dapat menawarkan solusi: Buat direktori "drop" yang terpisah, jalankan minijob terpisah di sana yang memperbaiki izin dan kemudian memindahkan file ke direktori data aplikasi. Anda dapat menggunakan incron untuk itu sehingga hampir tidak ada penundaan waktu yang nyata.
sumber
Saya dapat memikirkan empat metode yang mungkin untuk melakukan ini:
find $HOME/intake -type f -exec chmod 660 {} \;
, sistem yang berbeda memiliki peningkatan kinerja dalam hal ini (seperti-exec+
opsi)PROMPT_COMMAND='test -s $PWD/.umask && umask $(cat $PWD/.umask)'";$PROMPT_COMMAND"
akan menjadi yang paling sederhana.sumber