ติดตั้ง FileZilla FTP Server บน Windows
พอดีต้องติดตั้งโปรแกรม FTP Server ให้ลูกค้า ผมเคยใช้โปรแกรม vsftpd ก็เลยติดตั้งโปรแกรมตัวนี้ให้เขา และก็เลยเอามาเผยแพร่ในเว็บ เผื่อมีใครสนใจ
1. ติดตั้ง
สำหรับ x86_64
- โค้ด: เลือกทั้งหมด
yum -y install vsftpd.x86_64
สำหรับ i386
- โค้ด: เลือกทั้งหมด
yum -y install vsftpd
2. ทำให้เป็น Service
- โค้ด: เลือกทั้งหมด
chkconfig vsftpd on
3. ไฟล์คอนฟิก
ในไดเร็คตอรี่ /etc/vsftpd มีอยู่ 4 ไฟล์ครับ ดังนี้
3.1 ไฟล์ vsftpd.conf เป็นไฟล์คอนฟิกหลัก
ที่ต้องแก้ไขมีดังต่อไปนี้ครับ
#ปิดไม่ให้ Anonymous ล๊อกอินได้ ดีฟอลท์คือ Yes
anonymous_enable = NO
#ให้ยูสเซอร์อัพโหลดไฟล์ได้ ล๊อกอินเข้ามาแล้วสร้างไฟล์ได้ สร้างไดเร็คตอรี่ได้ แก้ไขได้ ลบได้ แต่จะทำได้เฉพาะไฟล์ที่อยู่ใน home directory ของตัวเอง
write_enable = YES
#เซ็ตเป็น Yes, ให้ยูสเซอร์ "ทุกคน" ที่มีแอ๊คเค๊าท์อยู่ในไฟล์ /etc/passwd ล๊อกอินเข้าได้
local_enable = YES
#ไฟล์ที่ยูสเซอร์อัพโหลเข้าไดเร็คตอรี่จะถูกเซ็ตด้วยคำสั่ง umask ให้เป็น 022 เป็นการจำกัดสิทธิการเข้าถึงไฟล์ในไดเร็คตอรี่ เราไม่ค่อยคุ้ยเคย umask เท่าไหร่ แต่เราคุ้นเคย rwxrwxrwx ให้เอา 777 ตั้ง ลบด้วย 022 ก็จะได้ 755 หรือ rwxr-xr-x
local_umask = 022
#เซ็ตแบนเนอร์
ftpd_banner=Welcome to blah FTP service.
# เซ็ตเป็น No จะทำให้ยูสเซอร์ที่มีรายชื่อในไฟล์ /etc/vsftpd/user_list (แต่ต้องไม่มีรายชื่อยู่ในไฟล์ /etc/vsftpd/ftpusers) ล๊อกอินเข้าโปรแกรมได้
userlist_deny = No
# ให้ยูสเซอร์อยู่แต่ใน home directory ของตัวเอง ไม่ให้เปลี่ยนเข้าไปในไดเร็คตอรี่ของคนอื่นได้
chroot_local_user = YES
# แต่ยูสเซอร์ที่มีรายชื่ออยู่ในไฟล์ /etc/vsftpd/chroot_list สามารถเปลี่ยนไดเร็คตอรี่ได้ ไฟล์นี้ยังไม่มีต้องสร้างขึ้นมาใหม่และใส่รายชื่อยูสเซอร์เพิ่มเข้าไปครับ
# ยูสเซอร์เหล่านี้สามารถใช้คำสั่ง cd ไปยังไดเร็คตอรี่ของคนอื่นได้
chroot_list_enable = YES
chroot_list_file = /etc/vsftpd/chroot_list
# เก็บ log file ก็ใช้ตามที่โปรแกรมตั้งมาให้ก็แล้วกันครับ
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
พิมพ์คำสั่ง
- โค้ด: เลือกทั้งหมด
touch /var/log/xferlog
3.2 ไฟล์ ftpusers
เก็บรายชื่อยูสเซอร์ที่จะไม่ให้ล๊อกอินทาง FTP
3.3 ไฟล์ user_list
เก็บรายชื่อยูสเซอร์ที่โปรแกรมอาจจะยอมหรือไม่ยอมให้ล๊อกอิน ขึ้นอยู่กับบรรทัด userlist_deny ในไฟล์ /etc/vsftpd/vsftpd.conf ครับ ตามนี้ครับ
ถ้า userlist_deny = No โปรแกรมจะยอมให้เฉพาะยูสเซอร์ในไฟล์ user_list เท่านั้นที่ล๊อกอินได้
ถ้า userlist_deny = Yes (ดีฟอลท์) โปรแกรมจะไม่ยอมให้ยูสเซอร์ในไฟล์ user_list ล๊อกอิน ลองล๊อกอินดูก็จะไม่มีพร้อมท์ password ให้ใส่พาสเวอร์ด
แต่ถึงแม้ว่าจะเซ็ต userlist_deny = No แล้ว แต่ถ้ายูสเซอร์คนนั้นมีชื่อยู่ในไฟล์ /etc/vsftpd/ftpusers โปรแกรมก็จะไม่ยอมให้ล๊อกอิน และไฟล์นี้เก็บแต่ชื่อยูสเซอร์นะครับ ส่วนพาสเวอร์ดนั้นจะเก็บอยู่ในระบบอยู่แล้ว ก็ตั้งแต่ตอนที่เราสร้างยูสเซอร์ด้วยคำสั่ง useradd และสร้างพาสเวอร์ดด้วยคำสั่ง passwd
3.4 ไฟล์ vsftpd_conf_migrate.sh
เป็นสคริปต์ใช้ย้ายคอนฟิกของโปรแกรม vsftpd เวอร์ชั่นเก่าๆที่ไม่ได้อยู่ในไดเร็คตอรี่ /etc/vsftpd ให้มาอยู่ในไดเร็คตอรี่นี่ เราคงไม่ได้ใช้งานสคริปต์นี้ครับ
3.5 ไฟล์ chroot_list ถ้าสร้างขึ้นมา
เก็บรายชื่อยูสเซอร์ที่จะยอมให้เปลี่ยนไดเร็คตอรี่ได้หลังจากล๊อกอินเข้าโปรแกรมแล้ว
3.6 ไดเร็คตอรี่ /var/ftp/pub
เป็นไดเร็คตอรี่ที่ vsftpd เตรียมไว้สำหรับ Anonymous
4. สตาร์ทโปรแกรม vsftpd
- โค้ด: เลือกทั้งหมด
service vsftpd start
เปิดให้ยูสเซอร์ Anonymous ล๊อกอินเข้าไปได้
ยูสเซอร์ประเภท anonymous คือ ยูสเซอร์ที่ล๊อกอินด้วยคำว่า anonymous และพาสเวอร์ดเป็น email address ซึ่งเป็นอีเมล์ปลอมๆก็ได้ขอให้มีเครื่องหมาย @ อยู่ด้วย ข้อมูลที่ให้ anonymous เข้าดูได้จะเป็นข้อมูลที่ไม่เป็นความลับ และอีกทั้งก็สามารถเรียกดูได้จาก web browser
ไดเร็คตอรี่ที่ vsftpd จะนำเราเข้าไปหลังจากล๊อกอินด้วย anonymous คือ /var/ftp ครับ ดีฟอลท์จะมีซับไดเร็คตอรี่ pub อยู่ข้างใน
ถ้าต้องการให้ Anonymous ล๊อกอินเข้า FTP server ได้ ให้ทำดังต่อไปนี้ครับ
1. บรรทัด anonymous_enable ในไฟล์ /etc/vsftpd/vsftpd.conf เปลี่ยนจาก NO เป็น YES
anonymous_enable = YES
2. กำหนดสิทธิของ Anonymous
ถ้าต้องการให้ Anonymous สามารถอัพโหลดไฟล์และสร้างไดเร็คตอรี่ได้ ก็ให้เอาเครื่องหมาย # หน้าสองบรรทัดนี้ออก
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
3. ไดเร็คตอรี่ของ Anonymous
ไดเร็คตอรี่ดีฟอลท์คือ /var/ftp
4. รีสตาร์ท vsftpd
service vsftpd restart
ตัวอย่างการล๊อกอินด้วยยูสเซอร์ anonymous
220 (vsFTPd 2.0.5)
User (192.168.100.3:(none)): anonymous
331 Please specify the password.
Password:
230 Login successful.
ftp> dir
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Apr 25 02:35 pub
226 Directory send OK.
ftp: 61 bytes received in 0.00Seconds 61000.00Kbytes/sec.
ftp> cd pub
250 Directory successfully changed.
ftp> dir
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 Apr 25 02:35 test.txt
226 Directory send OK.
ftp: 66 bytes received in 0.00Seconds 66000.00Kbytes/sec.
ftp>