Saya memiliki banyak skrip dan aplikasi yang berjalan lama yang menyimpan hasil keluaran dalam direktori yang dibagikan di antara beberapa pengguna. Saya ingin cara untuk memastikan bahwa setiap file dan direktori yang dibuat di bawah direktori bersama ini secara otomatis memiliki u=rwxg=rwxo=r
izin.
Saya tahu bahwa saya dapat menggunakannya umask 006
di awal berbagai skrip saya, tetapi saya tidak suka pendekatan itu karena banyak pengguna menulis skrip mereka sendiri dan mungkin lupa menyetel umask sendiri.
Saya benar-benar hanya ingin sistem file mengatur file dan direktori yang baru dibuat dengan izin tertentu jika ada di folder tertentu. Apakah ini mungkin?
Pembaruan : Saya pikir itu dapat dilakukan dengan POSIX ACL , menggunakan fungsi ACL Default, tetapi itu semua sedikit di atas kepala saya saat ini. Jika ada yang bisa menjelaskan bagaimana menggunakan ACL Default, mungkin akan menjawab pertanyaan ini dengan baik.
sumber
Jawaban:
Untuk mendapatkan kepemilikan yang tepat, Anda dapat mengatur bit setuid grup pada direktori dengan
Ini akan memastikan bahwa file yang dibuat di direktori dimiliki oleh grup. Anda kemudian harus memastikan bahwa setiap orang berjalan dengan umask 002 atau 007 atau semacamnya --- inilah mengapa Debian dan banyak sistem linux lainnya dikonfigurasi dengan grup per-pengguna secara default.
Saya tidak tahu cara memaksa izin yang Anda inginkan jika umask pengguna terlalu kuat.
sumber
+s
bagian itu? Terima kasih.Berikut cara melakukannya menggunakan ACL default, setidaknya di Linux.
Pertama, Anda mungkin perlu mengaktifkan dukungan ACL pada sistem file Anda. Jika Anda menggunakan ext4 maka itu sudah diaktifkan. Sistem file lain (mis., Ext3) perlu dipasang dengan
acl
opsi. Jika demikian, tambahkan opsi ke file/etc/fstab
. Misalnya, jika direktori terletak di sistem file root Anda:Kemudian pasang kembali:
Sekarang, gunakan perintah berikut untuk mengatur ACL default:
Semua file baru
/shared/directory
sekarang harus mendapatkan izin yang diinginkan. Tentu saja, ini juga tergantung pada aplikasi yang membuat file tersebut. Misalnya, sebagian besar file tidak akan dapat dieksekusi oleh siapa pun sejak awal (bergantung pada argumen mode untuk panggilan open (2) atau creat (2)), seperti saat menggunakan umask. Beberapa utilitas seperticp
,,tar
danrsync
akan mencoba mempertahankan izin file sumber yang akan menutupi ACL default Anda jika file sumber tidak dapat ditulis oleh grup.Semoga ini membantu!
sumber
umask
untuk semua pengguna. = / unix.stackexchange.com/questions/71743/…cp
maka itu akan mencoba menyalin izin dari file sumber. Bahkan tidakumask
membantu saat menggunakancp
. Saya telah melihat masalah yang sama dengantar
. Lihat pertanyaan ini .umask
.setfacl
works correctly
- saya berasumsi bahwa itu harus gagal, tetapi saya tidak yakin, karena jawabannya meleset dari poin itu.Ini jelek, tetapi Anda dapat menggunakan perintah setfacl untuk mencapai apa yang Anda inginkan.
Di mesin Solaris, saya memiliki file yang berisi acls untuk pengguna dan grup. Sayangnya, Anda harus mencantumkan semua pengguna (setidaknya saya tidak dapat menemukan cara untuk membuat ini berfungsi sebaliknya):
Beri nama file acl.lst dan isi nama pengguna asli Anda, bukan user_X.
Anda sekarang dapat mengatur acls tersebut di direktori Anda dengan mengeluarkan perintah berikut:
sumber
dalam skrip shell Anda (atau
.bashrc
) Anda dapat menggunakan sesuatu seperti:umask 022
umask
adalah perintah yang menentukan pengaturan topeng yang mengontrol bagaimana izin file diatur untuk file yang baru dibuat.sumber
umask 002
di .bashrc saya.umask 002
membatasi akses ke orang lain, membiarkan grup tidak berubah. Ingat, ituugo
- itu adalah kelompok pengguna orang lain. Juga ingat bahwa umask pada dasarnya berarti mengurangi dari default. Untuk file:666 - 002
berarti 664 yang berarti grup tidak terpengaruh.