การทำ SFTP เพื่อแยก User บน Linux
1 min read

การทำ SFTP เพื่อแยก User บน Linux

สร้าง group user สำหรับ sftp โดยใช้ชื่อว่า sftp_users

groupadd sftp_users

สร้าง user ไปยัง sftp_users group และตั้งค่า permission

useradd -m -G sftp_users usertest01
สร้าง user ชื่อ usertest01 ใน group sftp_users
echo "usertest01:<enter_password>" | chpasswd
สร้าง password ให้กับ usertest01
chown root /home/usertest01
ให้สิทธิ์ root กับ usertest01
mkdir -p /home/usertest01/upload
chown usesrtest01 /home/usertest01/upload
สร้าง directory เริ่มต้นให้กับ usertest01 และแก้ไขสิทธิ์
chmod 755 /home/usertest01
สำหรับ centos 7 เพื่อแก้ปัญหาใช้ %h ไม่ได้

แก้ไฟล์ sftp config ที่ ( /etc/ssh/sshd )

nano /etc/ssh/sshd_config

#Subsystem      sftp    /usr/lib/openssh/sftp-server
Subsystem       sftp    internal-sftp

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory %h
  ForceCommand internal-sftp
เป็นการกำหนดสิทธิ์ของ user ทั้งหมดที่อยู่ใน group sftp_users

restart service ssh

/etc/init.d/ssh restart

ทดสอบเข้าใช้งาน

ssh usertest01@192.168.0.2
This service allows sftp connections only.
Connection to 192.168.0.2 closed.
จะพบว่าไม่สามารถใช้งาน usertest01 ผ่าน ssh ได้ ต้องเข้าใช้งานผ่าน sftp เท่านั้น
sftp usertest01@192.168.0.2
usertest01@192.168.0.2's password: 
conntected to usertest01@192.168.0.2.
sftp> 
sftp> ls
upload
sftp> cd /root
Couldn't stat remote file: No such file or directory