วิธีที่ดีที่สุดในการทำเช่นนี้คือการสร้างคุก chroot สำหรับผู้ใช้ ฉันจะล้างคำตอบที่นี่เมื่อฉันกลับถึงบ้าน แต่ฉันโพสต์โซลูชันในบล็อกของฉัน
https://thefragens.com/chrootd-sftp-on-mac-os-x-server/
ด้านล่างนี้เป็นคำแนะนำส่วนใหญ่จากโพสต์ด้านบน
ขั้นแรกคุณควรสร้างผู้ใช้ใหม่ใน Admingroup Workgroup และกำหนดสิทธิ์การเข้าถึง SSH ผ่านทาง Server Admin หรือกำหนดให้กับกลุ่มที่มีสิทธิ์การเข้าถึง SSH การอภิปรายเพิ่มเติมอยู่ด้านล่าง
จาก Terminal ให้ปิดเครื่องทันที
sudo cp /etc/sshd_config /etc/sshd_config.bkup
sudo chown root /
sudo chmod 755 /
sudo mkdir -p /chroot/user/scratchpad
sudo chown -R root /chroot
sudo chown user /chroot/user/scratchpad
sudo chmod -R 755 /chroot
ผู้ใช้ใหม่ที่เพิ่มเข้ามาทุกรายจะได้รับสิ่งต่อไปนี้
sudo mkdir -p /chroot/user2/scratchpad
sudo chown root /chroot/user2
sudo chown user2 /chroot/user2/scratchpad
sudo chmod -R 755 /chroot/user2
ทุกโฟลเดอร์มันเส้นทางไปยังคุก chroot root
จะต้องเป็นเจ้าของโดย ฉันไม่คิดว่ามันเป็นสิ่งที่กลุ่มโฟลเดอร์เป็นสิ่งที่ฉันได้ทำไปแล้ว
- การสำรองข้อมูล
/etc/sshd_config
- เปลี่ยนความเป็นเจ้าของของไดเรกทอรีรากเป็น
root
- เปลี่ยนการอนุญาตของไดเรกทอรีรากเป็น 755
- สร้างโฟลเดอร์ chroot
- สร้างโฟลเดอร์ผู้ใช้ภายในโฟลเดอร์ chroot
- สร้างโฟลเดอร์ภายในโฟลเดอร์ผู้ใช้ที่ผู้ใช้สามารถแก้ไขได้
- กำหนดความเป็นเจ้าของและสิทธิ์
ตอนนี้แก้ไข/etc/sshd_config
ต่อไปนี้
#Subsystem sftp /usr/libexec/sftp-server
Subsystem sftp internal-sftp
Match User user
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory /chroot/user
สิ่งนี้สร้างคุก chroot ซึ่งเมื่อผู้ใช้ล็อกอินจะดร็อปมันลงในโฟลเดอร์/chroot/user
ในโฟลเดอร์นั้นเป็นโฟลเดอร์ที่พวกเขาสามารถเพิ่มสิ่งต่าง ๆ ลงไป/chroot/user/scratchpad
ได้
หากคุณต้องการสร้างกลุ่มในผู้ดูแลระบบเวิร์กกรุ๊ปสำหรับ 'ผู้ใช้ Chroot' จากนั้นเพิ่มผู้ใช้ใหม่ที่คุณสร้างในผู้ดูแลระบบเวิร์กกรุ๊ปในกลุ่มคุณจะไม่ต้องแก้ไข/etc/sshd_config
ไฟล์ต่อไป แทนการข้างต้นเพิ่มต่อไปนี้ ตรวจสอบให้แน่ใจว่าคุณเพิ่มกลุ่ม 'ผู้ใช้ Chroot' ลงใน ACH การเข้าถึง ACL ใน Server Admin
Match Group chrootusers
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory /chroot/%u
หากต้องการทดสอบว่าข้างต้นใช้งานได้หรือไม่ให้ออกดังต่อไปนี้จากเครื่องเทอร์มินัล
$ sftp user@domain.com
Password:
sftp>