rbash กับ sftp
www.tanabutr.co.th/photobook
เมื่อวานพยายามจะเซ็ต account ในลินุกซ์ให้คนใช้ upload/download ด้วย sftp. ปรกติถ้าเป็น user ธรรมดาเวลาล็อกอินเข้ามาด้วย sftp จะสามารถเปลี่ยนไดเรกทอรีที่อยู่เหนือโฮมไดเรกทอรีของตัวเองด้วย. ก็เลยทำให้นึกถึง restrict bash ซึ่งถ้าเซ็ตให้เป็นเชลล์ของ user นั้นแล้วก็จะจำกัดการใช้งานต่างๆได้เช่น ไม่สามารถเปลี่ยนไดเรกทอรีไปที่อื่นนอกจากโฮมไดเรกทอรีของตัวเอง ฯลฯ.
วิธีเปลี่ยนเชลล์ให้ user ก็อาจจะทำได้ตั้งแต่ใช้คำสั่ง vipw คือแก้ไฟล์ /etc/passwd ด้วย vi. แต่จะให้ดีก็ใช้คำสั่งที่เตรียมไว้ให้แล้วเช่น usermod ตามตัวอย่างที่เปลี่ยนเชลล์ล็อกอินของ somchai ให้เป็น /bin/rbash
# usermod -s /bin/rbash somchai
ก็นึกว่าจะใช้ sftp จากเครื่องไคลเอ็นต์เข้ามาได้ แต่ปรากฏว่าพอใส่รหัสผ่านเสร็จก็ถูกตัดออกจากระบบเลย.
$ sftp somchai@colinux Connecting to colinux... Password: Connection closed
แต่ถ้าใช้ scp จะไม่โดนตัด. ทีนี้ก็พยายามจะทำให้มันเข้าได้ด้วย sftp ก็ได้ค้นหาข้อมูลเพิ่มเติมพบว่าคงต้องใช้เชลล์อื่นๆเช่น scponly หรือ rssh. คราวนี้ได้ลองใช้ scponly ให้เป็นเชลล์ของยูสเซอร์นั้น. ใช้เดเบียนก็สะดวกดีสั่ง
# apt-get install scponly
เสร็จแล้วจะมีให้ configure ตัว scponly ให้มันรองรับ chroot ด้วย. มันจะทำให้โปรแกรม /usr/sbin/scponlyc เป็นโปรแกรมแบบ suid ซึ่งไม่ค่อยดีนักแต่ก็อยากจะให้เวลาคนที่ใช้ sftp อยู่ในไดเรกทอรีของตัวเองเท่านั้น.
เปลี่ยนเชลล์ให้ยูสเซอร์
# usermod -s /usr/bin/scponly somchai
จบเสร็จแล้วก็ scp หรือ sftp ได้อย่างเดียวและ sftp แล้วก็อยู่ในโฮมไดเรกทอรีนั้นไม่สามารถไปที่อื่นได้.
ลองใช้ rssh ด้วยเหมือนกันและรู้สึกจะตั้งค่าอะไรได้ละเอียดกว่า scponly.
Comments: blogger