ฉันรู้ว่าคำถามนี้ถูกพูดถึงแล้ว แต่จากการอ่านโพสต์ฉันไม่สามารถหาคำตอบได้เพราะบางคนพูดว่า "ใช่ umask สามารถทำงานได้" และคนอื่น ๆ พูดว่า "คำสั่ง OpenSSH ใส่คำสั่งสงวนสิทธิ์เสมอ"
ก่อนอื่นเพียงเพื่อความแม่นยำ:
- ฉันใช้ OpenSSH 5.9 บน RHEL 6.2
- ฉันได้กำหนดค่าเซิร์ฟเวอร์ SFTP chrooted ใช้
internal-sftp
ระบบย่อยด้วย-u 0002
สำหรับ umask - ฉันแม่นยำฉันไม่ได้ใช้
-p
หรือ-P
ตัวเลือก
จากสิ่งที่ฉันได้อ่านในมือข้างหนึ่ง:มีหลายวิธีในการกำหนด umask สำหรับการถ่ายโอน SFTP:
- ตัวเลือก
-u
ของinternal-sftp
(หรือsftp-server
) ตั้งแต่ OpenSSH 5.4 - สร้าง wrapper เป็น
sftp-server
(ซึ่งเราตั้ง umask ไว้อย่างชัดเจน - สิ่งนี้ไม่เหมาะกับ chrooted environment btw) - เพิ่มการกำหนดค่าเฉพาะใน
pam.d/sshd
ไฟล์
ในทางกลับกันฉันได้อ่าน:
ไคลเอนต์และเซิร์ฟเวอร์ OpenSSH SFTP ทำการถ่ายโอนการอนุญาต (เป็นส่วนขยาย) และสร้างไฟล์ระยะไกลด้วยการอนุญาตด้านโลคัล AFAICT ไม่มีวิธีใดที่จะปิดการทำงานนี้
ดังนั้นฉันจึงทำการทดสอบต่อไปนี้:
ในไคลเอนต์ของฉันฉันสร้างไฟล์MYFILE
และไดเรกทอรีที่MYDIR
มีสิทธิ์ 600 และ 700
จากนั้นด้วยsftp
คำสั่ง:
mkdir => the new directory has permissions following the umask (OK)
put MYFILE => MYFILE has same permissions as on client (KO)
put -r MYDIR => MYDIR has same permissions as on client (KO)
ถ้าฉันเปลี่ยนการอนุญาตของMYFILE
และMYDIR
บนฝั่งไคลเอ็นต์และอัปโหลดอีกครั้งฉันจะได้รับสิทธิ์ใหม่ในฝั่งเซิร์ฟเวอร์
ฉันลองpam.d
วิธีแก้ปัญหาด้วย แต่ก็ไม่เปลี่ยนอะไรเลย
ดังนั้นตอนนี้ฉันสับสน:
จากสิ่งที่ฉันทดสอบและเป็นส่วนหนึ่งของสิ่งที่ฉันอ่านฉันจะบอกว่า OpenSSH รักษาสิทธิ์ไว้เสมอ แต่เนื่องจากมีโพสต์มากมายที่บอกว่าสามารถกำหนด umask ได้ฉันสามารถจินตนาการว่าฉันทำสิ่งที่ผิดในการกำหนดค่าการทดสอบของฉัน
ฉันขอขอบคุณข้อเสนอแนะที่มีประสบการณ์บางอย่าง
ขอขอบคุณ.