pure-ftpd + mysql + pure-ftpd manager for virtual user
2008/12/05 21:09
媛쒕컻 ?섍꼍
OS : Ubuntu 8.10
DB : MySQL
OS : Ubuntu 8.10
DB : MySQL
1. pure-ftpd-mysql ?ㅼ튂
$ sudo apt-get install pure-ftpd-mysql
2. FTP GROUP怨?USER ?앹꽦
GID??UID???꾩쓽濡?2001濡??ㅼ젙?⑸땲??
ftpgroup 怨?ftpuser ?쇰뒗 ?대쫫?쇰줈 洹몃9怨??좎?瑜??깅줉?섏??듬땲??
洹몃9紐낃낵 ?좎?紐낆? ?뚯븘???뺥븯?쒕㈃ ?⑸땲??
$ sudo groupadd -g 2001 ftpgroup
$ sudo useradd -u 2001 -s /bin/false -c "pureftpd user" -g ftpgroup ftpuser
$ sudo useradd -u 2001 -s /bin/false -c "pureftpd user" -g ftpgroup ftpuser
?쎌쭏) -d /bin/null ???듭뀡??二쇨퀬 user瑜??앹꽦?섏??붾땲 FTP ?묒냽???ㅼ젙??Dir濡?媛?? ?딄퀬 臾댁“嫄?/root/home?쇰줈 ?묒냽 ??
?꾩쓽濡?FTP ?붾젆?좊━瑜??ㅼ젙?섍린 ?꾪빐??-d /bin/null ?듭뀡???쒓굅??
李멸퀬) useradd ?듭뀡
-c 異붽??ㅻ챸 : ?ъ슜???ㅻ챸
-b : ?뷀뤃?????붾젆?좊━瑜?蹂?꼍
-d /home/怨꾩젙 : ???붾젆?좊━ 吏?젙
-e 2006-12-01 : ?⑥뒪?뚮뱶 留뚮즺湲곌컙 吏?젙
-u : UID 吏?젙
-g : GID 吏?젙(湲곕낯 洹몃9)
-G : 2媛쒖씠??洹몃9??吏?젙?섍굅??-g ?ㅼ쓬 異붽?濡?洹몃9??吏?젙 ?좊븣(,濡?援щ텇)
-o : UID瑜?猷⑦듃沅뚰븳??'0'?쇰줈 ?ㅼ젙?덉쓣??媛뺤젣濡??앹꽦 媛?뒫
-p 12345 : ?⑥뒪?뚮뱶 吏?젙
-s /bin/??: ??吏?젙(bash, csh, false ?깅벑)
-m : /etc/skel?먯꽌 ?앹꽦???ъ슜???덈뵒?됲넗由щ줈 ?ㅼ젙 ?뚯씪??蹂듭궗?쒕떎. /etc/skel ???꾨땲?쇰㈃ -m -k 寃쎈줈 瑜??⑥???/span>
-M : ?덈뵒?됲넗由щ? ?앹꽦?섏? ?딅뒗 ?ъ슜??異붽???/span>
3. pure-ftpd???ъ슜??MySQL DB ?앹꽦
DB ?앹꽦 諛?怨꾩젙 / 鍮꾨?踰덊샇 ?ㅼ젙
DB 紐?: pureftpd ( ?먰븯?쒕뒗 DB 紐낆쑝濡?蹂?꼍?섏꽭??)
DB user: pureftpd password : ftpdpass ( ?먰븯?쒕뒗 ?대쫫怨?鍮꾨쾲?쇰줈 蹂?꼍?섏꽭??)
$ mysql -uroot -p
mysql> CREATE DATABASE pureftpd;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO ?쁯ureftpd??'localhost??IDENTIFIED BY ?쁣tpdpass??
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO ?쁯ureftpd??'localhost.localdomain??IDENTIFIED BY ?쁣tpdpass??
mysql> FLUSH PRIVILEGES;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO ?쁯ureftpd??'localhost??IDENTIFIED BY ?쁣tpdpass??
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO ?쁯ureftpd??'localhost.localdomain??IDENTIFIED BY ?쁣tpdpass??
mysql> FLUSH PRIVILEGES;
?댁젣 ?앹꽦??pureftpd?쇰뒗 DB??ftpd?쇰뒗 ?뚯씠釉붿쓣 ?앹꽦?⑸땲??
USE pureftpd;
ftpd ?뚯씠釉??앹꽦 ( ?먰븯?쒕뒗 ?뚯씠釉붾챸?쇰줈 蹂?꼍?섏꽭??)
CREATE TABLE ftpd (
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
Password varchar(64) NOT NULL default '',
Uid varchar(11) NOT NULL default '-1',
Gid varchar(11) NOT NULL default '-1',
Dir varchar(128) NOT NULL default '',
ULBandwidth smallint(5) NOT NULL default '0',
DLBandwidth smallint(5) NOT NULL default '0',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
Password varchar(64) NOT NULL default '',
Uid varchar(11) NOT NULL default '-1',
Gid varchar(11) NOT NULL default '-1',
Dir varchar(128) NOT NULL default '',
ULBandwidth smallint(5) NOT NULL default '0',
DLBandwidth smallint(5) NOT NULL default '0',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;
李멸퀬 ) InnoDB vs MyISAM
exit;
?닿쾬?쇰줈 DB ?ㅼ젙???앸궗?듬땲??
4. pure-ftpd mysql ?ㅼ젙
湲곗〈 ?뚯씪??蹂듭궗?섏뿬 ?볤퀬 mysql.conf ?뚯씪???섏젙?⑸땲??
$ cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf.orig
$ sudo vim/etc/pure-ftpd/db/mysql.conf
$ sudo vim/etc/pure-ftpd/db/mysql.conf
MYSQLSocket /var/lib/mysql/mysql.sock
#MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword ftpdpass
MYSQLDatabase pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess="*" OR ipaccess LIKE "\R")
MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess="*" OR ipaccess LIKE "\R")
MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess="*" OR ipaccess LIKE "\R")
MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess="*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess="*" OR ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess="*" OR ipaccess LIKE "\R")
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess="*" OR ipaccess LIKE "\R")
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess="*" OR ipaccess LIKE "\R")
5. pure-ftpd 湲고? ?ㅼ젙
conf ?붾젆?좊━ ?꾨옒 ?ㅼ젙媛??뗮똿
home dir ?댁쇅?먮뒗 ?먯깋 ?????놁쓬
echo ?쐙es??| sudo tee /etc/pure-ftpd/conf/ChrootEveryone
home ?붾젆?좊━媛??놁쓣 ???덈줈 留뚮벉
echo ?쐙es??| sudo tee /etc/pure-ftpd/conf/CreateHomeDir
pure-ftpd-mysql???덈줈 ?쒖옉 ?쒕떎.
/etc/init.d/pure-ftpd-mysql restart
6. pure-ftpd 怨꾩젙 ?앹꽦 諛??뚯뒪??
$ mysql -uroot -p
GID, UID???꾩뿉???앹꽦 ?섏???2001濡??ㅼ젙. 2001 ??떊 ftpuser??ftpgroup瑜??ъ슜?섏뀛???⑸땲??
UP, DOWN ?띾룄??100KB 濡??ㅼ젙
FTP ?ъ슜?먮뒗 exampleuser 鍮꾨쾲??password 濡??ㅼ젙?섏??듬땲??
濡쒓렇?몄떆 蹂댁뿬吏?Dir??/work/FTPHOME ?쇰줈 ?ㅼ젙?섏??듬땲??
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES (?셞xampleuser?? ???? MD5(?셮assword??, ??001?? ??001?? ??work/FTPHOME?? ??00?? ??00?? ?? ???? ??0?? ????;
exit;
mkdir /work/FTPHOME
chown ftpuser:ftpgroup /work/FTPHOME
?댁젣 FTP Client瑜??댁슜?섏뿬 FTP???묒냽?⑸땲??
id : exampleuser / passwd: password
李멸퀬 ) ?쒓???蹂댁씠吏??딆쓣??
?꾨옒 ?ъ씠?몃? 李멸퀬?섏뿬 conf ?꾨옒 ?ㅼ젙?뚯씪??留뚮뱾怨?????pure-ftpd-mysql???ㅼ떆 ?쒖옉?섎㈃ ?⑸땲??
http://b.gaedol.org/65
echo "utf8" | sudo tee /etc/pure-ftpd/conf/FsCharset
echo "cp949" | sudo tee /etc/pure-ftpd/conf/ClientCharset
echo "yes" | sudo tee /etc/pure-ftpd/conf/BrokenClientsCompatibility
echo "yes" | sudo tee /etc/pure-ftpd/conf/DontResolv
echo "cp949" | sudo tee /etc/pure-ftpd/conf/ClientCharset
echo "yes" | sudo tee /etc/pure-ftpd/conf/BrokenClientsCompatibility
echo "yes" | sudo tee /etc/pure-ftpd/conf/DontResolv
7. pure-ftpd manager ?ъ슜
pure-ftpd manager???ㅼ튂?섏떆硫??꾩뿉???댁<?⑤뜕 媛곸쥌 ?ㅼ젙?ㅼ쓣 ?쒕갑???앸궡?????덉뒿?덈떎.
wget http://machiel.generaal.net/files/pureftpd/ftp_v2.1.tar.gz
tar -xvvzf pureftpd/ftp_v2.1.tar.gz
mv ftp/ /var/www/
sudo chown www-data /var/www/ftp -R
http://localhost/ftp/install.php
tar -xvvzf pureftpd/ftp_v2.1.tar.gz
mv ftp/ /var/www/
sudo chown www-data /var/www/ftp -R
http://localhost/ftp/install.php
?대젃寃??ㅼ튂?섏뿬 ?앷릿 DB瑜?/etc/pure-ftpd/db/mysql.conf ???ㅼ젙?섎㈃ 諛붾줈 ?ъ슜 媛?뒫??寃?媛숈뒿?덈떎. ( ?꾩쭅 ?대낫吏??딆븘??... )
pure-ftpd manager瑜??ъ슜?섎㈃ user 愿?━ 諛??깅줉 ??젣媛??⑥뵮 ?명븷 寃?媛숈뒿?덈떎留??꾩쭅 洹?갖?꾩꽌 ?ㅼ튂留??대넃怨?
?곕룞???대낫吏??딆븯?듬땲??
< ?ㅼ젙 ?붾㈃ >
[##_1C|1059853111.jpg|width="857" height="445" alt="?ъ슜???쎌엯 ?대?吏?|_##]
8. reference
pure-ftpd 留ㅻ돱??a href="http://jeanmatthieu.free.fr/pureftpd/doc/adv/man/pure-ftpd.html" target="_blank">
http://jeanmatthieu.free.fr/pureftpd/doc/adv/man/pure-ftpd.html
pure-ftpd manager ?ㅼ튂 李멸퀬
http://ubuntuforums.org/showthread.php?t=275451