ฉันต้องการให้ลูกค้าเข้าถึงเซิร์ฟเวอร์ของฉัน แต่ฉันต้องการ จำกัด ผู้ใช้เหล่านั้นไปยังโฮมไดเร็กตอรี่ของพวกเขา ฉันจะผูกไฟล์ใด ๆ ที่ฉันต้องการให้พวกเขาเห็น
ฉันได้สร้างผู้ใช้ที่เรียกว่าและเพิ่มเขาไปยังกลุ่มใหม่ที่เรียกว่าbob
พวกเขามีไดเรกทอรีบ้านที่sftponly
/home/bob
ฉันเปลี่ยนเชลล์/bin/false
เป็นหยุดการเข้าสู่ระบบ SSH นี่คือ/etc/passwd
สายของพวกเขา:
bob:x:1001:1002::/home/bob:/bin/false
ฉันได้เปลี่ยน/etc/ssh/sshd_config
ไปรวมถึงต่อไปนี้:
Match Group sftponly
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
เมื่อฉันพยายามเข้าสู่ระบบในฐานะพวกเขานี่คือสิ่งที่ฉันเห็น
$ sftp bob@server
bob@server's password:
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
ถ้าฉันใส่ความคิดเห็นในChrootDirectory
บรรทัดฉันสามารถ SFTP แต่แล้วพวกเขามีบังเหียนฟรีผ่านเซิร์ฟเวอร์ ฉันพบว่าใช้ChrootDirectory /home
งานได้ แต่ก็ยังช่วยให้พวกเขาสามารถเข้าถึงไดเรกทอรีบ้านได้ ฉันพยายามอย่างชัดเจนChrootDirectory /home/bob
แต่ก็ไม่ได้ผล
ผมทำอะไรผิดหรือเปล่า? ฉันbob
จะจำกัด ได้/home/bob/
อย่างไร
---- แก้ไข -----
ตกลงดังนั้นฉันเพิ่งดู/var/log/auth.log
และเห็นสิ่งนี้:
May 9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session opened for user bob by (uid=0)
May 9 14:45:48 nj sshd[5091]: fatal: bad ownership or modes for chroot directory component "/home/bob/"
May 9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session closed for user bob
ฉันไม่แน่ใจว่ามีอะไรเกิดขึ้นบ้าง แต่มันแสดงให้เห็นว่ามีบางอย่างผิดปกติกับไดเรกทอรีผู้ใช้ นี่คือls -h /home
ผลลัพธ์:
drwxr-xr-x 26 oli oli 4096 2012-01-19 17:19 oli
drwxr-xr-x 3 bob bob 4096 2012-05-09 14:11 bob
ChrootDirectory /home/%u
ChrootDirectory %h