Pertanyaan saya mirip dengan yang lain ini , kecuali ada yang bertanya tentang file yang baru dibuat.
Di kotak Unix saya, pengguna alice , bob dan tomcat ada di grup tomcat .
File konfigurasi server Tomcat dimiliki oleh tomcat pengguna, dan dalam tomcat grup.
Saya telah mengubah izin file ini menjadi dapat dibaca dan ditulis oleh grup sehingga alice dan bob dapat mengedit file.
Namun, saya perhatikan bahwa setelah mengedit, file menjadi milik pengguna terakhir yang mengeditnya.
T: Apakah mungkin untuk mengubah izin sehingga Alice dan Bob dapat mengedit file, tanpa mengubah kepemilikannya?
Bagaimana cara mengedit file mengubah kepemilikannya?
files
permissions
ownership
Leonel
sumber
sumber
Jawaban:
Pengguna file yang dihasilkan tergantung pada apa yang editor lakukan. Beberapa editor menyimpan file dengan memotongnya, dan menulis di atas file (tanpa mengubah inode). Dan beberapa editor mengganti nama file menjadi nama lain (
file
sepertifile~
biasa), dan membuat file baru dengan nama aslinya. Memodifikasi file asli membuat pemilik tetap sama, membuat yang baru membuat file baru yang dimiliki oleh UID dari proses pembuatan.Dari editor yang saya miliki di Debian,
nano
danjoe
, juganvi
danvim
(versi minimal dalamvim-tiny
) tampaknya menimpa di tempat. Meskipun saya kiravim
dan Emacs mungkin dapat dikonfigurasi dalam apa yang mereka lakukan.Stephen berkomentar tentang pembaruan atom . Masalah dengan menciptakan kembali di tempat adalah bahwa file terpotong ke panjang nol, lalu ditulis. Proses lain dapat membuka dan membacanya sebelum semua data ditulis.
Pembaruan atom akan dilakukan dengan membuat versi baru seperti katakan
file.new
, lalu ganti namafile.new
menjadifile
. Meninggalkan file cadangan, orang dapat membuatfile.new
, menautkanfile
kefile~
dan kemudian mengganti namafile.new
menjadifile
. Ganti nama bersifat atomik dalam proses apa pun yang mengakses file dengan nama mendapatkan versi lama atau baru, bukan apa pun di antaranya. Pegangan file yang terbuka tentu saja akan mengarah ke file yang dibuka, memberikan tampilan yang konsisten pada file.Dari sudut pandang izin file , menyimpan lebih dari file yang sama (inode) memerlukan akses tulis ke file itu sendiri (tetapi bukan direktori), mengubah nama file dan membuat yang baru memerlukan akses tulis ke direktori (tetapi tidak ke file asli ).
(Mengganti nama dan membuat ulang secara kebetulan juga merupakan cara untuk memperbaiki izin file jika seseorang membuat atau memodifikasi file dalam direktori bersama, tetapi lupa untuk memberikan akses tulis grup kepada file tersebut.)
sumber
Seperti yang dijelaskan oleh ilkkachu , jika editor yang digunakan membuat file baru saat menyimpan, maka tidak ada cara untuk mengontrol pemilik file. Yang mungkin Anda benar-benar pedulikan adalah memastikan file tetap dapat dibaca oleh Tomcat; Anda dapat melakukannya dengan memastikan grup mereka
tomcat
(dan mereka dapat dibaca oleh grup mereka), dan itu dapat diberlakukan pada file baru dengan mengatursetgid
bit pada direktori induk :Jadi, jika
bob
mengedit file menggunakan editor yang membuat kembali file, file yang diedit akan berakhir menjadi milikbob:tomcat
dan Tomcat masih dapat membacanya (dengan tipikalumask
setidaknya). Selama direktori induk dapat ditulis olehtomcat
grup, setiap pengguna dalam grup tersebut akan dapat mengedit file dalam direktori (jika hanya dengan membuat ulang mereka).Namun saya akan merekomendasikan untuk mengubah proses Anda; Anda mungkin tidak boleh mengedit file langsung di lokasi yang mereka baca dari Tomcat. Idealnya, file akan disimpan dalam VCS dari beberapa jenis dan digunakan oleh proses terpisah (mungkin otomatis). Dengan begitu Anda menghindari semua masalah kepemilikan ini ...
sumber