หากไคลเอนต์ SFTP ไม่ได้ระบุการอนุญาตสำหรับไฟล์ที่อัพโหลดเซิร์ฟเวอร์ OpenSSH SFTP จะกำหนดสิทธิ์ 0666 ให้กับไฟล์ที่สร้างขึ้นใหม่ (ลบด้วย umask 0002 ทำให้เป็น 0664)
นี่เป็นรหัสฮาร์ดโค้ดคุณไม่สามารถเปลี่ยนได้ ดูprocess_open()ฟังก์ชั่นในsftp-server.cของ OpenSSH และแม้ว่าหากไม่ได้ระบุไว้อย่างชัดเจน 0666 ยังคงเป็นค่าเริ่มต้น * nix สำหรับไฟล์คุณจะไม่สามารถเปลี่ยนแปลงสิ่งนี้ด้วย umask (เป็นจริงโดยทั่วไปไม่ใช่แค่สำหรับ OpenSSH)
ดูเพิ่มเติมที่เซิร์ฟเวอร์ OpenSSH SFTP ใช้ umask หรือสงวนสิทธิ์ฝั่งไคลเอ็นต์หลังจากคำสั่ง put (สภาพแวดล้อม chrooted) หรือไม่
โปรดทราบว่า umask ของคุณผิดจริง หากคุณต้องการ 0644 ให้ใช้ umask 0022 ไม่ใช่ 0002
FileZilla ไม่เคยระบุสิทธิ์สำหรับไฟล์ที่อัพโหลด สิ่งที่ส่งผลให้เกิดพฤติกรรมที่คุณกำลังประสบอยู่
เพื่อให้ได้สิทธิ์ที่คุณต้องการ:
ด้วย FileZilla คุณสามารถเปลี่ยนการอนุญาตไฟล์ได้ด้วยตนเองเท่านั้นหลังจากการอัพโหลดโดยใช้คำสั่งการอนุญาตไฟล์จากเมนูบริบทไฟล์ระยะไกล

ใช้ไคลเอนต์ SFTP ที่อนุญาตให้ระบุสิทธิ์สำหรับไฟล์ที่อัพโหลด
ตัวอย่างเช่น WinSCP อนุญาต
ดูhttps://winscp.net/eng/docs/ui_transfer_custom

(ฉันเป็นผู้เขียน WinSCP)