all-in-one 7 (multisite proftpd)
ทำ ftp ใช้ proftpd
ที่ทำเป็น คือใช้ proftpd (ตัวอื่นทำ VirtualHost ไม่เป็น หรืออาจทำยาก)
เนื่องจากเรามี 2 โดเมน คือ example.com และ example.org เราต้องการทำ ftp ทั้งสองโดเมน จึงต้องทำเรื่อง VirtualHost
แต่เนื่องจากระบบ VirtualHost ใน proftpd ไม่เหมือนใน apache2 เสียทีเดียว เนื่องจากเขาไม่ถือชื่อโฮสต์เป็นสำคัญ แต่จะถือไอพีและพอร์ตเป็นตัวจำแนกแทน ดังนั้นถ้าเราต้องการแยกไดเรกทอรี่ระหว่าง example.com และ example.org เราจะต้องใช้พอร์ตเป็นตัวแยกแทน
สมมุติฐานมีดังนี้คือ
- Anonymous user ให้ไปใช้ที่ /var/ftp/pub/ โดยให้ ftp เป็นเจ้าของ อยู่ในกลุ่ม nogroup ใช้พอร์ตมาตรฐาน คือ 21
- example.com - anonymous ใช้ที่ /var/ftp/example.com/ ให้ user1:comgroup เป็นเจ้าของ ใช้พอร์ต 10021
- example.org - anonymous ใช้ที่ /var/ftp/example.org/ ให้ user2:orggroup เป็นเจ้าของ ใช้พอร์ต 10022
- ผู้ใช้ในระบบ จะสามารถเข้าถึงได้ทุกแชร์ มีสิทธิ์อ่านเขียนตามสิทธิ์ในระบบลินุกซ์
- Anonymous จะถูกขังในกรงของแต่ละโดเมนเท่านั้น อ่านได้อย่างเดียว
- ไฟล์ทั้งหมดจะถูกสำรอง นั่นคือไฟล์ตัวจริงอยู่ภายใต้ /sys1/sysb/var/ftp
เตรียมผู้ใช้และกลุ่ม
เพิ่มกลุ่ม ftpusers สำหรับพอร์ตกลาง และ comgroup กับ orggroup สำหรับพอร์ตพิเศษ
# groupadd ftpusers
# groupadd comgroup
# groupadd orggroup
แก้ไขผู้ใช้ ftpuser1 ให้เข้ามาเป็นสมาชิกของ comgroup และ ftpuser2 ให้เข้ามาเป็นสมาชิกของ orggroup
# useradd -g ftpusers -G comgroup -m -d /home/ftpuser1 ftpuser1
# useradd -g ftpusers -G orggroup -m -d /home/ftpuser2 ftpuser2
# passwd ftpuser1
# passwd ftpuser2
ป้อนรหัสผ่านตามปกติ
เตรียมไดเรกทอรี่
# mkdir -p /sys1/sysb/var/ftp/{pub,example.com,example.org}
# ln -sf /sys1/sysb/var/ftp /var
# chown ftpuser1:comgroup /var/ftp/example.com
# chown ftpuser2:orggroup /var/ftp/example.org
# chown ftp:ftpusers /var/ftp/pub
# chmod 775 /var/ftp/*
ติดตั้ง
# aptitude install proftpd
Run proftpd from inetd or standalone? <<<--- standalone
แก้ไขเรื่อง IPv6 ไม่ให้แสดงรายงานความผิดพลาด
และแก้ไขงานของ Anonymous โดยเอาจากตัวอย่างในไฟล์
และเพิ่มให้อ่านไฟล์คอนฟิกของ example.com และ example.org
# vi /etc/proftpd/proftpd.conf
...
#UseIPv6 on
UseIPv6 off
...
# A basic anonymous configuration, no upload directories.
#<Anonymous ~ftp>
<Anonymous /var/ftp/pub>
User ftp
Group nogroup
# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous ftp
# Cosmetic changes, all files belongs to ftp user
DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell off
# Limit the maximum number of anonymous logins
MaxClients 10
# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayFirstChdir .message
# Limit WRITE everywhere in the anonymous chroot
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
# Uncomment this if you're brave.
# <Directory incoming>
# # Umask 022 is a good standard umask to prevent new files and dirs
# # (second parm) from being group and world writable.
# Umask 022 022
# <Limit READ WRITE>
# DenyAll
# </Limit>
# <Limit STOR>
# AllowAll
# </Limit>
# </Directory>
</Anonymous>
Include /etc/proftpd/example.com.conf
Include /etc/proftpd/example.org.conf
สร้างไฟล์ example.com.conf ให้มาใช้พอร์ต 10021
# vi /etc/proftpd/example.com.conf
<VirtualHost ftp.example.com>
ServerName "Example.com's FTP site"
DefaultRoot ~
AllowOverwrite on
Umask 002
User ftpuser1
Group comgroup
MaxClients 10
Port 10021
<Anonymous /var/ftp/example.com>
User ftp
Group nogroup
# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous ftp
# Cosmetic changes, all files belongs to ftp user
DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell off
# Limit the maximum number of anonymous logins
MaxClients 10
# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayFirstChdir .message
# Limit WRITE everywhere in the anonymous chroot
<Directory /var/ftp/example.com>
</Directory>
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
</Anonymous>
</VirtualHost>
สร้าง example.org.conf ให้มาใช้พอร์ต 10022
# vi /etc/proftpd/example.org.conf
<VirtualHost ftp.example.org>
ServerName "Example.org's FTP site"
DefaultRoot ~
AllowOverwrite on
Umask 002
User ftpuser2
Group orggroup
MaxClients 10
Port 10022
<Anonymous /var/ftp/example.org>
User ftp
Group nogroup
# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous ftp
# Cosmetic changes, all files belongs to ftp user
DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell off
# Limit the maximum number of anonymous logins
MaxClients 10
# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayFirstChdir .message
# Limit WRITE everywhere in the anonymous chroot
<Directory /var/ftp/example.org>
</Directory>
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
</Anonymous>
</VirtualHost>
เริ่ม protftpd ใหม่
# /etc/init.d/proftpd restart
เสร็จแล้ว
ผู้ใช้งานสามารถใช้งานผ่าน
- ftp://ftp.example.com หรือ ftp://ftp.example.org ซึ่งจะไปที่ /var/ftp/pub
- ftp://ftp.example.com:10021/ จะไปที่ /var/ftp/example.com
- ftp://ftp.example.org:10022/ จะไปที่ /var/ftp/example.org
- ผู้ใช้ในระบบ ดูรายชื่อไฟล์ในระบบได้ทั่ว
หมายเหตู
- อ้างอิง Proftpd: A User's Guide
- เอาง่ายเข้าว่า จึงไม่ได้ทำเพิ่มเติมเรื่องความปลอดภัย อาจดูเพิ่มเติมได้ที่ debian-administration: Setting up an FTP server on Debian
- Printer-friendly version
- Log in or register to post comments
- 3931 reads







Recent comments