[มือใหม่] สอบถามเรื่อง การตั้งค่า ProFTPd บน Centos ครับ

คือว่าผมอยากจะใช้ ftp ก็ได้ไปค้นหาวิธีติดตั้งมา

ก็ติดตั้งไปตามขั้นตอน

1.) ติดตั้ง third-party yum repository ผมใช้ repository ของ securityteam.us นะครับ

rpm -Uvh http://repo.securityteam.us/repository/redhat/securityteamus-repo-latest.rpm

rpm --import http://repo.securityteam.us/repository/RPM-GPG-KEY

2.) ติดตั้ง ProFTPd

yum install proftpd

หลังจากติดตั้งเสร็จแล้วไฟล์คอนฟิกของ ProFTPd จะอยู่ที่ /etc/proftpd.conf ซึ่งสามารถใช้ค่าปกตินี้ได้เลย

3.) หากบนเครื่องเซิร์ฟเวอร์มีโปรแกรมให้บริการ FTP ตัวอื่นเช่น vsFTPd ก็ควรหยุดการทำงานของโปรแกรมดังกล่าวเสียก่อนหรือถอนการติดตั้งเสียก่อน(หาก ไม่มีข้ามขั้นตอนนี้ไปได้เลย)

yum remove vsftpd

4.) กำหนดให้ ProFTPd ทำงานทุกครั้งเมื่อเริ่มต้นระบบและเริ่มการทำงานของ ProFTPd

chkconfig proftpd on

/etc/init.d/proftpd start

ที่มา http://learners.in.th/blog/mrgill/158522

ผลคือติดตั้งสำเร็จ จากนั้นผมก็ใช้ user redhippo (ที่สร้างไว้ตอนติดตั้ง ที่ไม่ใช่ root อ่ะครับ) ลอง access เข้าไปมันก็ขึ้นว่า

สถานะ: เชื่อมต่อสำเร็จ กำลังรอข้อความต้อนรับ

ผลตอบกลับ: 220 FTP Server ready.

คำสั่ง: USER redhippo

ผลตอบกลับ: 331 Password required for redhippo

คำสั่ง: PASS ********

ผลตอบกลับ: 230 User redhippo logged in

คำสั่ง: OPTS UTF8 ON

ผลตอบกลับ: 200 UTF8 set to on

สถานะ: เชื่อมต่อสำเร็จ

สถานะ: กำลังรอรับข้อมูลไดเรคทอรี…

คำสั่ง: PWD

ผลตอบกลับ: 257 “/” is the current directory

คำสั่ง: TYPE I

ผลตอบกลับ: 200 Type set to I

คำสั่ง: PASV

ผลตอบกลับ: 227 Entering Passive Mode (87,118,126,75,178,75).

คำสั่ง: MLSD

ผลตอบกลับ: 150 Opening ASCII mode data connection for MLSD

ผลตอบกลับ: 226 Transfer complete

สถานะ: รับรายการไดเรคทอรีสำเร็จ

ผมก็คิดว่ามันก็คงจะใช้ได้อ่ะนะครับ ถ้าแบบนี้ แต่ไม่เจอไฟล์อะไรนะ คาดว่าเป็น Folder ว่างๆ ลองอัพไฟล์ใส่ลงไปก็อัพไม่ได้ด้วยครับ

แต่ว่าผมมีปัญหาตรงที่ว่า ผมไม่รู้จะไปตั้งค่ามันยังไง กำหนด home ของ user redhippo นี่ได้ยังไงครับ จุดประสงค์ผมคืออยากกำหนด home ของ ftp ไปที่ /var/www/html/ อ่ะครับ เพื่อไว้อัพโหลดไฟล์เว็บต่างๆ

ลองไป nano ไฟล์ /etc/proftpd.conf ดูก็ งงๆออกอาการไปไม่ถูกว่าจะทำยังไงต่อ พยายามลองค้นดูก็ไม่มีอธิบาย ส่วนมากจะมีอธิบายแค่วิธีติดตั้ง เลยมาตั้งกระทู้ถามว่า ผมควรจะไปต่อยังไงดี หรือผมไม่เข้าใจระบบการทำงานของ ftp บน centos ก็เป็นได้ เลยอยากขอคำแนะนำหน่อยครับ

( ผมเคยใช้ filezlla server ทำ ftp server บน windows มาก่อนครับ )

useradd -d /var/www/html redhippo

passswd redhippo

chown redhippo:redhippo /var/www/html

ถ้ามี user redhippo อยู่แล้ว

usermod -d /var/www/html redhippo

chown redhippo:redhippo /var/www/html

หรือจะเข้าไปแก้ที่ # vi /etc/passwd

ถ้า user เป็น redhippo

มองหาบรรทัด redhippo:x:

จะเห็น :/home/redhippo:/bin/bash

แก้เป็น :/var/www/html:/bin/bash

จะได้ประมาณนี้ redhippo:x:500:500::/var/www/html:/bin/bash (ตัวเลขตรง 500 อาจจะเป็นเลขอื่น)

เป็นการกำหนด floder ให้กับ user redhippo :/var/www/html:

ใช้คำสั่ง usermod ดีกว่าครับ ไม่แนะนำวิธีนี้ ไม่ว่ากรณีใดๆ ทั้งสิ้น ยกเว้นระบบพังไปแล้วจริงๆ ค่อยใช้

แก้ /etc/passwd เดี๋ยวพัง ! เทพมาอีกแล้ว5555

ผมลองทำตามแล้วครับ โดยสร้าง user test01 ขึ้นมาใหม่ตามที่แนะนำ

ลอง login ดูมันแจ้งแบบนี้ครับ

สถานะ: เชื่อมต่อสำเร็จ กำลังรอข้อความต้อนรับ

ผลตอบกลับ: 220 FTP Server ready.

คำสั่ง: USER test01

ผลตอบกลับ: 331 Password required for test01

คำสั่ง: PASS ********

ผลตอบกลับ: 530 Login incorrect.

ผิดพลาด: การวิเคราะผิดพลาด

ผิดพลาด: ไม่สามารถเชื่อมต่อไปยังแม่ข่าย

ลองไปดูใน /var/log/messages มันมีเออเร่อเกี่ยวกับ proftpd แบบนี้ครับ

Sep 27 10:41:31 ns proftpd[3193]: localhost.localdomain - ProFTPD 1.3.2d (maint) (built Fri Feb 19 14:47:19 UTC 2010) standalone mode STARTUP

Sep 27 10:41:35 ns proftpd[3195]: localhost.localdomain (::ffff:125.26.103.72[::ffff:125.26.103.72]) - FTP session opened.

Sep 27 10:41:36 ns proftpd[3195]: localhost.localdomain (::ffff:125.26.103.72[::ffff:125.26.103.72]) - notice: unable to use ‘~/’ [resolved to ‘/var/www/html/’]: Permission $

Sep 27 09:41:36 ns proftpd[3195]: localhost.localdomain (::ffff:125.26.103.72[::ffff:125.26.103.72]) - Preparing to chroot to directory ‘~/’

Sep 27 09:41:36 ns proftpd[3195]: localhost.localdomain (::ffff:125.26.103.72[::ffff:125.26.103.72]) - test01 chdir(“/”): No such file or directory

Sep 27 09:41:36 ns proftpd[3195]: localhost.localdomain (::ffff:125.26.103.72[::ffff:125.26.103.72]) - FTP session closed.

จะแก้ยังไงดีครับ

ลองแก้ path home ของ user เป็นทั้ง /var/www/html/ กับ /var/www/html แล้วก็ไม่ได้ทั้งสองอย่าง

จะว่า path ผิดก็ เช็คดูแล้วว่ามี /var/www/html/ อยู่จริงๆครับ

ต้องเปลี่ยน จาก DefaultRoot / เป็น DefaultRoot /var/www/html ที่ไฟล์ proftpd.conf ด้วยหรือเปล่าครับ

ใน proftpd.conf มันเป็น

DefaultRoot ~ !adm

ส่วนไฟล์เต็มๆที่ไฟล์แนบอ่าครับ

[attachment=3553:proftpd.conf.txt]

chown test01 /var/www/html ด้วยครับ

มันบอกว่า user test01 ไม่มีสิทธิ์เข้า /var/www/html

ลอง chown test02 /var/www/html/test02 ( ผมสร้าง test02 แล้วกำหนด home ไปที่นี่ครับ แล้วลอง chown ตามที่แนะนำมา )

สถานะ: เชื่อมต่อสำเร็จ กำลังรอข้อความต้อนรับ

ผลตอบกลับ: 220 FTP Server ready.

คำสั่ง: USER test02

ผลตอบกลับ: 331 Password required for test02

คำสั่ง: PASS ********

ผลตอบกลับ: 530 Login incorrect.

ผิดพลาด: การวิเคราะผิดพลาด

ผิดพลาด: ไม่สามารถเชื่อมต่อไปยังแม่ข่าย

ปกติผมจะใช้ vsftpd ครับ เพราะไม่ต้องไปหา repo เพิ่มเติม

yum install vsftpd ก็ใช้งานได้เลย

user ในระบบสามารถ ftp ได้ทันที

หรือถ้าจะให้ chroot เวลา ftp เข้ามาไม่ให้ออกไปนอก home ได้ก็แค่เพิ่ม

chroot_local_user=YES

บรรทัดเดียว

ส่วน proftpd ก็ทำงานได้ไม่ต่างกัน ที่ยังใช้ไม่ได้น่าจะติดเรื่อง permission หรือมี config บางบรรทัดที่ทำให้เข้าไม่ได้ (ว่าแต่ไฟล์ config ระบบสร้างให้ตอนติดตั้งเองเลย หรือว่าไป copy มาจากใหนครับ)

ลอง remark บรรทัดพวกนี้ออกให้หมดแล้วลองเข้าดูใหม่ (อย่าลืม restart service ก่อน)



# Cause every FTP user except adm to be chrooted into their home directory

# Aliasing /etc/security/pam_env.conf into the chroot allows pam_env to

# work at session-end time (http://bugzilla.redhat.com/477120)

VRootEngine			on

DefaultRoot			~ !adm

VRootAlias			etc/security/pam_env.conf /etc/security/pam_env.conf



# Use pam to authenticate (default) and be authoritative

AuthPAMConfig			proftpd

AuthOrder			mod_auth_pam.c* mod_auth_unix.c

# If you use NIS/YP/LDAP you may need to disable PersistentPasswd

#PersistentPasswd		off


ไฟล์ config เป็นไฟล์ที่สร้างจากระบบเองครับ ไม่ได้แก้ไขอะไรเลย

ลองแล้วครับ ยังไม่ได้อยู่ดีอ่ะครับ ขึ้นเออเร่อเหมือนเดิมเลย ( Restart service แล้ว )

ก็ถ้าไม่มีเหตุผลจำเป็นอะไรว่าต้องเป็น proftpd ก็ลองลง vsftpd แทนดูครับ

proftpd ไม่ต้องลบออกก็ได้แค่ stop ไว้เฉยๆ แล้วก็เลือกให้ระบบ start แค่ตัวใดตัวหนึ่งตอน boot

จริงๆถ้าไม่ลง third-party repo ก็มี proftpd ให้ลงนะครับ และลงเสร็จแล้วก็สามารถใช้งานได้เลย แทบไม่ต้องทำอะไรเลยครับ - -"

เดี๋ยวลองลง vsftpd ดูครับ เพราะไม่รู้จะแก้ proftpd ยังไงแล้ว

ไม่ค่อยเข้าใจเรื่อง third-party repo เพราะว่าเป็นมือใหม่ ยังไม่ทราบอะไรมาก ยังไงจะลองศึกษาเพิ่มครับ

ส่วน proftpd ผมก็ทำตาม how to อ่ะครับ ลงเสร็จก็เจอปัญหาแบบที่ว่าเนี่ยล่ะครับ - -*

สรุปตอนนี้ลง vsftpd แล้ว ด้วย yum install vsftpd แล้วก็ service vsftpd start

แต่เวลา login จะเจอปัญหา

500 OOPS: cannot change directory:/var/www/html/test02

เฮือก … ทำใม linux มันยากจัง

ปล. stop proftpd service ไปแล้วครับ

น่าจะติดที่ permission แล้วล่ะครับ

ลองไล่ดู permission ทีละ folder เลยตามนี้

755 root root /var

755 root root /var/www

755 root root /var/www/html

755 test02 test02 /var/www/html/test02



chown root:root /var

chown root:root /var/www

chown root:root /var/www/html

chown -R test02:test02 /var/www/html/test02



chmod 755 /var

chmod 755 /var/www

chmod 755 /var/www/html

chmod 755 /var/www/html/test02


เจอวิธีแก้แล้วครับ

ได้แล้วครับ ผมไปค้นหาในพี่ google หาตาแทบเหลือก

http://learners.in.th/blog/5010863068/36718 External Link

ถ้าเจอปัญหา FTP Login failed. ฟ้องว่า

500 OOPS: cannot change directory:/home/users

ให้แก้ไขแฟ้มชื่อ /etc/selinux/config ตรงนี้ต้องเป็น /etc/vsftpd/selinux/config

แก้ไขบรรทัดข้อความจากเดิมคือ SELINUX=enforcing

ให้เป็นข้อความว่า SELINUX=disabled

ต้อง reboot ใหม่แล้ว หลังจากนั้น FTP login ผ่าน

เท่านี้เองครับ

ขอบคุณอย่างแรง

ที่มา : http://www.thaiadmin.org/board/index.php?topic=94447.msg404754#msg404754

ลอง login แล้ว success แล้วครับ 1 เครียดกับปัญหา ftp ทั้งวันเลย เฮ้อ

ต่อไปก็เครียดเรื่องต่อไปแทน

ขอขอบคุณทุกท่านที่ให้คำแนะนำ