sftp, chroot + chdir ไปยัง user home?

Sep 25 2020

มีการกำหนดค่าที่มีลักษณะเช่นนี้

AllowUsers sftpu
Match Group sftpg
    ChrootDirectory /home/sftp
    ForceCommand internal-sftp
    AllowTCPForwarding no
    X11Forwarding no

passwdรายการ (กลุ่ม 7700 เป็นชื่อsftpg)

sftpu:x:7700:7700::/home/sftp/allu:/bin/false

และalluผบ

drwxrwxr-x  4 guacam sftpg  4096 Sep 16  2019 /home/sftp/allu/

เกือบจะได้ผล chrootทำงาน แต่แตกต่างจากสิ่งที่มนุษย์กล่าวว่า

หลังจาก chroot sshd (8) จะเปลี่ยนไดเร็กทอรีการทำงานเป็นโฮมไดเร็กทอรีของผู้ใช้

dir ที่ทำงานของผู้ใช้หลังจากเข้าสู่ระบบ/home/sftpไม่ใช่/home/sftp/alluและฉันเดาว่าเป็นเพราะ/home/sftp/alluเป็นของguacamและไม่ใช่sftpu(ในขณะที่sftpgกลุ่มมีrwxการเข้าถึงalluและสามารถเขียนได้นั่นเป็นเพราะผู้ใช้หลายคนควรแชร์alludir เดียวกันนั้น)

เว้นแต่การกำหนดค่าข้างต้นจะมีข้อบกพร่องมีคำสั่งในระบบย่อย sshd สำหรับอย่างใดอย่างหนึ่ง

  • บังคับให้ chdir (หลัง chroot) ไปที่บ้านของผู้ใช้
  • ผ่อนคลายกฎการเข้าถึงเล็กน้อย
  • ...

ในขณะที่เก็บโครงสร้างไดเรกทอรีเดียวกันและเข้าถึง?

คำตอบ

2 MichaelHampton Sep 25 2020 at 23:25

sshd ไม่สามารถเปลี่ยนไดเร็กทอรีการทำงานเป็นโฮมไดเร็กทอรีของผู้ใช้เนื่องจากไม่มีอยู่ /มันจึงออกชุดไดเรกทอรีการทำงานกับ

/home/sftp/alluคุณได้รับมอบหมายผู้ใช้นี้ไดเรกทอรีบ้าน แต่แล้วคุณ chroot /home/sftpผู้ใช้สามารถ นั่นหมายความว่าเทียบกับ chroot ไดเร็กทอรีนั้นอยู่ที่/allu! /home/sftp/alluไม่

คุณจำเป็นต้องทราบว่า chroot ทำให้ไดเร็กทอรีรูทที่ผู้ใช้ล็อกอินสามารถเข้าถึงได้จะถูกเปลี่ยนเป็นจุดต่ำกว่าในระบบไฟล์และพา ธ ทั้งหมดสัมพันธ์กับสิ่งนั้น ดังนั้นหากผู้ใช้ต้องเข้าถึง/home/sftp/alluภายในไดเรกทอรี chroot แล้วข้างนอกในระบบแฟ้มจริงไดเรกทอรีจะเป็น/home/sftp/home/sftp/home/sftp/allu