Saya kira Anda mengalami masalah karena WinSCP menghapus file yang ada sebelum mengunggah yang baru - yang seharusnya tidak pernah terjadi kecuali Anda tidak memiliki izin 'tulis' pada file lama, dalam hal ini menghapus dan mengganti adalah satu-satunya cara untuk WinSCP untuk mengunggah file Anda.
Saat membuat file baru di Linux, grup utama pembuat akan menjadi grup file 1 , dan izin akan dihitung menggunakan 2 (0666 & ~ umask). Pemilik dapat memodifikasi izin, tetapi hanya dapat mengubah grup file menjadi grup miliknya sendiri.
Dalam kasus situs web, saya biasanya mengatur setgid
bit pada direktori, sehingga semua file yang saya buat di dalam menjadi milik grup itu:
sudo chown -R :www-data public_html/
find public_html/ -type d -exec chmod g+s {} \;
Jika sistem file server telah mengaktifkan ACL, Anda juga bisa menentukan izin default untuk grup:
setfacl -Rdm g::rX public_html
Atau Anda dapat melewati langkah "setgid" dan "chgrp", dan cukup berikan izin default ke grup yang Anda inginkan:
setfacl -Rm g:www-data:rX public_html
setfacl -Rdm g:www-data-rX public_html
(Perintah dengan -d
mengatur izin default .)
- Kecuali direktori memiliki bit setgid , yang membuat file yang baru dibuat mewarisi grup direktori.
- Dapat dipengaruhi menggunakan ACL default pada direktori.
Anda perlu mengonfigurasi WinSCP untuk tidak mentransfer ke file sementara (yang kemudian diubah namanya menjadi nama file target). Kemudian WinSCP akan langsung menulis ke file target, dan menjaga izin / kepemilikan tetap utuh.
Pergi ke Prefereces> Transfer> Daya Tahan> Aktifkan Transfer ke Nama File Sementara .
sumber
Atur gid folder dan sekarang seharusnya menjaga grup menjadi data-www asalkan grup folder juga merupakan data-www
sumber