ฉันค้นหาวิธีการตั้งค่าumaskของ OpenSSH ให้0027
สอดคล้องกับการเชื่อมต่อทุกประเภท
ตามประเภทการเชื่อมต่อฉันหมายถึง:
- SFTP
- SCP
- ชื่อโฮสต์ssh
- โปรแกรมชื่อโฮสต์ssh
ความแตกต่างระหว่าง 3. และ 4 คือการเริ่มต้นเชลล์ซึ่งมักจะอ่าน/etc/profile
ข้อมูลในขณะที่หลังไม่ได้
นอกจากนี้โดยการอ่านโพสต์นี้ฉันได้ตระหนักถึงตัวเลือก -u ที่มีอยู่ใน OpenSSH เวอร์ชั่นใหม่กว่า อย่างไรก็ตามสิ่งนี้ไม่ทำงาน
ฉันยังต้องเพิ่มว่าในขณะนี้มี/etc/profile
umask 0027
จุดต่อจุด:
- SFTP - การตั้งค่า
-u 0027
ในการsshd_config
เป็นที่กล่าวถึงที่นี่ไม่เพียงพอ
ถ้าผมไม่ได้ตั้งค่าพารามิเตอร์นี้ใช้ SFTP umask 0022
โดยค่าเริ่มต้น ซึ่งหมายความว่าหากฉันมีสองไฟล์:
-rwxrwxrwx 1 user user 0 2011-01-29 02:04 execute
-rw-rw-rw- 1 user user 0 2011-01-29 02:04 read-write
เมื่อฉันใช้ sftp เพื่อวางไว้ในเครื่องปลายทางฉันได้รับจริง:
-rwxr-xr-x 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
แต่เมื่อฉันตั้ง-u 0027
บนsshd_config
ของเครื่องปลายทางที่จริงผมจะได้รับ:
-rwxr--r-- 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
ซึ่งไม่คาดหวังเนื่องจากควรเป็นจริง:
-rwxr-x--- 1 user user 0 2011-01-29 02:04 execute
-rw-r----- 1 user user 0 2011-01-29 02:04 read-write
ทุกคนเข้าใจว่าทำไมสิ่งนี้เกิดขึ้น
SCP - เป็นอิสระจากสิ่งที่มีการติดตั้งสำหรับSFTP
umask 0022
สิทธิ์อยู่เสมอ ขณะนี้ฉันยังไม่รู้เลยว่าจะแก้ไขสิ่งนี้อย่างไรssh hostname - ไม่มีปัญหาที่นี่เนื่องจากเชลล์อ่าน
/etc/profile
ตามค่าเริ่มต้นซึ่งหมายถึงumask 0027
การตั้งค่าปัจจุบันSSHชื่อโฮสต์โปรแกรม - สถานการณ์เดียวกับSCP
โดยรวมแล้วการตั้งค่า umask บนsftp
เปลี่ยนแปลงผลลัพธ์ แต่ไม่ควรssh hostname
ทำตามที่คาดไว้การอ่าน/etc/profile
และทั้งสองอย่างscp
และssh hostname program
ดูเหมือนจะมีumask 0022
ฮาร์ดโค้ดบางแห่ง
เรายินดีรับข้อมูลเชิงลึกเกี่ยวกับประเด็นใด ๆ ข้างต้น
แก้ไข:ฉันต้องการหลีกเลี่ยงการแก้ไขที่ต้องรวบรวม openssh ด้วยตนเอง ระบบกำลังเรียกใช้ Ubuntu Server 10.04.01 (ชัดเจน) LTS พร้อมopenssh
แพ็คเกจจากผู้ไม่ฝักใฝ่ฝ่ายใด
คำตอบ:ตามที่ระบุโดย poige การใช้ pam_umask ทำเคล็ดลับ
การเปลี่ยนแปลงที่แน่นอนคือ:
เพิ่มบรรทัดใน/etc/pam.d/sshd
:
# Setting UMASK for all ssh based connections (ssh, sftp, scp)
session optional pam_umask.so umask=0027
นอกจากนี้เพื่อให้มีผลกับเชลล์ล็อกอินทั้งหมดโดยไม่คำนึงว่าพวกเขามา/etc/profile
หรือไม่ก็มีการเพิ่มบรรทัดเดียวกัน/etc/pam.d/login
ด้วย
แก้ไข : หลังจากความคิดเห็นบางส่วนฉันได้ทดสอบปัญหานี้อีกครั้ง
อย่างน้อยใน Ubuntu (ที่ฉันทดสอบ) ดูเหมือนว่าหากผู้ใช้มี umask ที่แตกต่างกันในไฟล์ init ของเชลล์ (.bashrc, .zshrc, ... ), PAM umask จะถูกละเว้นและผู้ใช้กำหนด umask แทน การเปลี่ยนแปลงที่/etc/profile
ไม่ส่งผลกระทบต่อผลลัพธ์เว้นแต่ผู้ใช้ระบุแหล่งที่มาของการเปลี่ยนแปลงเหล่านั้นในไฟล์ init
ยังไม่มีความชัดเจนในจุดนี้หากพฤติกรรมนี้เกิดขึ้นในทุก distros
UsePAM yes
sshd_config ของคุณหรือไม่
/etc/profile
ในของคุณ บางสิ่งบางอย่างเช่นalias umask=/bin/true