ฉันได้รับ CentO ที่วางจำหน่าย 6.4 ด้วย Digital Ocean และต้องการสร้างผู้ใช้ SFTP ให้สำเร็จและขังพวกเขาไว้ในไดเรกทอรีบ้าน chroot ของผู้ใช้ แต่ฉันกลัวว่าฉันจะทำสิ่งนี้
ฉันลองหลายสิ่งหลายอย่างมากเกินกว่าที่จะแสดงรายการที่นี่จริง ๆ เพราะส่วนใหญ่อาจไม่ถูกต้องหรือไม่สมเหตุสมผล แต่สิ่งที่ฉันรู้สึกควรเป็นกระบวนการที่ถูกต้องและสิ่งที่ฉันได้ลองคือ: -
สร้างกลุ่มสำหรับsftp
: -
groupadd sftp
สร้างผู้ใช้และตั้งค่าโฮมไดเรกทอรีของพวกเขา: -
useradd -d /var/www/vhosts/domain.com dummyuser
ตั้งรหัสผ่านสำหรับผู้ใช้: -
passwd dummyuser
เปลี่ยนกลุ่มผู้ใช้เป็น 'sftp': -
usermod -g sftp dummyuser
ตั้งค่าเชลล์ของผู้ใช้เป็น/bin/false
: -
usermod -s /bin/false dummyuser
แก้ไขระบบย่อยในsshd_config
( /etc/ssh/
): -
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
เพิ่มสิ่งต่อไปนี้ที่ด้านล่างของsshd_config
ไฟล์: -
Match group sftp
X11Forwarding no
ChrootDirectory %h
AllowTcpForwarding no
ForceCommand internal-sftp
ฉันแน่ใจว่าไดเรกทอรีต่อไปนี้ทั้งหมดroot:root
: -
/var
/var/www
/var/www/vhosts
/var/www/vhosts/domain.com
หากฉันพยายามเข้าสู่เซิร์ฟเวอร์ผ่าน SFTP กับผู้ใช้dummyuser
(ใน WinSCP) ฉันจะได้รับสิ่งต่อไปนี้: -
Authentication log (see session log for details):
Using username "dummyuser".
Authentication failed.
สิ่งที่ฉันต้องการบรรลุคือการจำผู้ใช้ไปยังโฮมไดเร็กตอรี่ของพวกเขา ฉันยังได้รับการตั้งค่าและกำหนดค่า vsftpd ผู้ใช้สามารถเข้าสู่ระบบได้ แต่จะสามารถเข้าถึงเซิร์ฟเวอร์ทั้งหมดได้ - ฉันไม่ได้จัดการให้จำคุกทำงานเลย
แก้ไข
ลืมพูดถึงฉันก็เริ่มต้นใหม่sshd
ด้วย: -
service sshd restart
เมื่อข้อผิดพลาดที่ผลิตใน WinSCP, หน้าช่วยเหลือของพวกเขาเกี่ยวกับเรื่องนี้เป็นที่นี่
บันทึกผลลัพธ์
/var/log/secure
server_name
ฉันแทนที่ชื่อเซิร์ฟเวอร์จริงกับ
Apr 28 14:20:56 server_name sshd[9944]: Accepted password for dummyuser from 80.194.255.4 port 44402 ssh2
Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session opened for user dummyuser by (uid=0)
Apr 28 14:20:56 server_name sshd[9946]: fatal: bad ownership or modes for chroot directory component "/var/www/vhosts/"
Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session closed for user dummyuser
/var/log/secure
คุณจะต้องการที่จะดูที่
vhosts
root:root
sshd
หรือไม่ มีอะไรในไฟล์บันทึกบนเซิร์ฟเวอร์?