หน้า 1 จากทั้งหมด 1

ติดตั้งโปรแกรม vsftpd เป็น FTP Server บน CentOS

โพสต์โพสต์แล้ว: 24 เม.ย. 2011 15:41
โดย nuiz
สคริปต์อัพโหลดไฟล์บันทึกเสียงบน Issabel/FreePBX/Elastix ไปเก็บไว้บน FTP Server
ติดตั้ง 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>

Re: ติดตั้งโปรแกรม vsftpd เป็น FTP Server บน CentOS

โพสต์โพสต์แล้ว: 09 ส.ค. 2011 17:50
โดย hope
แล้วทำยังไงให้มัน ใช้ พ่านโปรแกรม FTP (เช่น CuteFTP) ได้ครับ

Re: ติดตั้งโปรแกรม vsftpd เป็น FTP Server บน CentOS

โพสต์โพสต์แล้ว: 10 ส.ค. 2011 08:54
โดย nuiz
ลองคอนเน็คแล้ว มันคอนเน็คไม่ได้เหรอครับ?

Re: ติดตั้งโปรแกรม vsftpd เป็น FTP Server บน CentOS

โพสต์โพสต์แล้ว: 10 ส.ค. 2011 10:17
โดย hope
ลอง connect แล้วครับไม่ได้ ในไฟล์ vsftpd.conf ของผมไม่ userlist_deny = No นะครับดูดีแล้ว พอลองใส่เพิ่มไป พอสั่ง restart มันบอกว่า
Starting vsftpd for vsftpd: 500 OOPS: unrecognised variable in config file: userlist_deny [FAILED]
ในไฟล์ ftpusers ผมก็ลบ user ออกหมดแล้ว port ที่ใช้ก็ port 20 ใช้ username pass ตอนล๊อกอินเข้า
ไม่รู้ต้องไปแก้ตรงใหนเพิ่มอีกหรือป่าวครับ