การจัดทำบริการ network drive

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 25-01-2555

ดูแลโดย WIPAT


  • การทำให้ client ที่เป็น MS สามารถ map network drive บนพื้นที่ server ได้โดยไม่ต้องใช้ SAMBA


  1. โดยทั่วไประบบอนุญาติให้ user สามารถมองเห็นพื้นที่นอก home ของตนเอง 
  2. เราจะมาจัดทำระบบที่ user ไม่สามารถเห็นนอก home ของตนเอง และ map network drive ใช้งานได้
  3. ผลข้างเคียงคือ user ผู้นั้นเข้าใช้งานด้วย ssh ไม่ได้ แต่ใช้ sftp ได้
  4. สมมติว่าต้องการสร้างพื้นที่ /sftp/share/gstudent ให้สมาชิกของ group ชื่อ student ที่มี user จำนวน 2 คน คือ susa และ tuta
  5. สร้าง group ชื่อ student ใช้คำสั่งว่า  sudo groupadd student
  6. สร้าง group ชื่อ sftponly สำหรับเฉพาะผู้ใช้ network drive ขึ้นมาใหม่ด้วยคำสั่ง sudo groupadd sftponly
  7. สร้างพื้นที่ /sftp  สำหรับเป็นพื้นที่เริ่มต้นของ network drive ด้วยคำสั่ง sudo mkdir -p /sftp
  8. สร้างพื้นที่ /sftp/home เพื่อให้เป็น home ของผู้ใช้ network drive ด้วยคำสั่ง sudo mkdir -p /sftp/home
  9. สร้างพื้นที่ /sftp/share เพื่อให้เป็นแบ่งปันกันใช้งาน share network drive ด้วยคำสั่ง sudo mkdir -p /sftp/share
  10. ตั้งค่าให้ห้ามลบแฟ้มข้อมูลที่ตนเองไม่ใช้เป็นเจ้าของ ด้วยคำสั่ง sudo chmod +t /sftp/share
  11. สร้างพื้นที่ /sftp/share/gstudent สำหรับให้ share ใช้งานภายใน group ด้วยคำสั่ง sudo mkdir -p /sftp/share/gstudent
  12. ตั้งค่าให้ group student เป็นเจ้าของ directory ด้วยคำสั่ง sudo chgrp -Rv student /sftp/share/gstudent
  13. ตั้งค่าให้ user ใน group student สามารเขียนอ่านได้ ด้วยคำสั่ง  sudo chmod  g+rws,o-rwx /sftp/share/gstudent
  14. ตอนนี้ก็ได้พื้นที่ share กันใช้งานแล้ว ตรวจสอบดูว่าพื้นที่พร้อมใช้งาน
    ลองคำสั่ง  ls -ld /sftp/share/ ได้ผลประมาณว่า drwxr-xr-t 3 root root 4096 2012-01-19 17:10 /sftp/share/
    ลองคำสั่ง ls -ld /sftp/share/* ได้ผลประมาณว่า drwxrws--- 2 root student 4096 2012-01-19 17:10 /sftp/share/gstudent
  15. สร้าง user ชื่อ susa ให้มี home อยู่ที่ /sftp/home/susa ด้วยคำสั่ง sudo useradd -m -b /sftp/home -s /bin/bash susa
    แล้วตั้งรหัสผ่านด้วยคำสั่งว่า sudo passwd susa
    ปิดให้ผู้ใช้อื่นเห็นพื้นที่ /sftp/home/susa ด้วยคำสั่ง sudo chmod -R o-rwx /sftp/home/susa
  16. สร้าง user ชื่อ tuta ให้มี home อยู่ที่ /sftp/home/tuta ด้วยคำสั่ง sudo useradd -m -b /sftp/home -s /bin/bash tuta
    แล้วตั้งรหัสผ่านด้วยคำสั่งว่า sudo passwd tuta
    ปิดให้ผู้ใช้อื่นเห็นพื้นที่ /sftp/home/tuta ด้วยคำสั่ง sudo chmod -R o-rwx /sftp/home/tuta
  17. ตั้งค่าให้  susa และ tuta เข้าใปในสมาชิกของ group student ด้วยคำสั่งว่า sudo gpasswd -M susa,tuta student
  18. ตั้งค่าให้  susa และ tuta เข้าใปในสมาชิกของ group stponly ด้วยคำสั่งว่า  sudo gpasswd -M susa,tuta sftponly
  19. แก้ไขแฟ้ม /etc/ssh/sshd_config  
    ไปที่ประมาณบรรทัด 75  ข้อมูลเดิมว่า Subsystem sftp ....
    ให้แก้ไขเปลี่ยนเป็นว่า Subsystem sftp internal-sftp
    แล้วไปท้ายสุด เพิ่มบรรทัดต่อท้ายว่า
    Match Group sftponly
      ChrootDirectory /sftp
      ForceCommand internal-sftp
    แล้วสั่งให้ sshd ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/ssh reload
  20. ถึงตอนนี้ให้ลองใช้โปรแกรม filezilla ติดต่อเข้ามาใช้บริการ server ได้เลย
    หากต้องการให้เป็น network drive ก็จำเป็นต้องใช้ sshfs หรือ sftp network drive ช่วย
    การ share แบบนี้ ผู้ใช้จะมองเห็น directory อื่นด้วย แล้วแต่สิทธิ์ที่กำหนดของแต่ละพื้นที
    ผลข้างเคียงคือสมาชิกของ group sftponlyเข้าใช้งานเฉพาะ sftp เท่านั้น แต่ ssh เข้ามาทำงานไม่ได้