Debian, MySQL, Kota, Download – Upload Limit, Pure-FTPd, Ip Access…
Pure-Ftp bilinen FTP serverlari icerisinde en guvenlilerinden bir tanesidir. Oyleki default ayarlari ile bile bircok ftp serverindan cok daha saglikli hizmet vermektedir.
Pure-ftp’ yi kullanici ve sifre bakimindan bir kac degisik yontemle calistirabiliriz. Ornegin LDAP , Sistem kullanicilari, kendi sanal kullanicilari , Database destekli sanal kullanicilar vb.
Biz bu yazida MySQL destekli Pure-FTPd kuracagiz. Yani kullanicilarimiz MySQL veritabaninda tutulacak. Peyki bu bize ne gibi avantajlar saglar? Ornegin isimizi otomatiklestirip is yukunden kurtulabiliriz. En basit senaryo ile Hosting satiyorsaniz web sitenizden siparis onayini verdiginiz anda kullaniciyi DB ye ekliyip FTP hesabini olusturabilirsiniz… Ornekler cok.
Ayrica Pure-FTPd ile kullanicilarimiza ip access, download ve upload limitleri, kota secenkleri vb. ekstralar getirebiliriz. Bunlarin tamamini ilerleyen asamalarda gosterecegim.
Oncelikle Pure-ftpd-mysql paketini indirip kurmamiz gerekiyor. Isletim sisteminize gore bu degisik yollarla yapilabilir. Ornegin
apt-get install pure-ftpd-mysql
ya da
yum install pure-ftpd-mysql
gibi…
Ben Debian Sarge uzerine kurulum yapiyorum ve ona gore anlatiyorum. Sizde makaleyi kendinize gore duzenleyin.
Oncelikle ihtiyacim olan paketleri kuruyorum.
apt-get install mysql-server mysql-client libmysqlclient12-dev
Mysql serverimizda kurulduguna gore oncelikle ona bir root passwordu atayalim ki risklerimizi azaltalim.
mysqladmin -u root password SIFRENIZ
SIFRENIZ yazan yere root password u olmasini istediginiz karakterleri girin.
Simdi sira esas oglani kurmaya geldi.
apt-get install pure-ftpd-mysql
Serveri Standalone kurmamiz gerekiyor.
Ftpwho ile ilgili soruyuda tamamen size birakiyorum.
groupadd -g 2007 dinopgroup
useradd -u 2007 -s /bin/false -d /bin/null -c “pureftpd user” -g dinopgroup dinopuser
dinopgroup ve dinopuser diye bir grup ve bir kullanici ekledim. Ayrica dinopuser kullanicisini dinopgroup grubuna uye ettim, shell yetkisi vermedim vs. vs.
Simdi database imi olusturabilirim
mysql -u root -p
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO ‘dinopsys’@’localhost’ IDENTIFIED BY ‘ftpdsifre’;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO ‘dinopsys’@’localhost.localdomain’ IDENTIFIED BY ‘dinopsifre’;
FLUSH PRIVILEGES;
Ne yaptik Db yi olusturduk, kullanici ve sifre tanimladik ve bu db kullanicisina pureftpd db si uzerinde bir takip yetkiler verdik. (kullanici dinopsys, sifre dinopsifre )
Simdi sirada tablolari olusturmak var. Hazir MySQL’ e login olmusken kaldigimiz yerden devam ediyoruz.
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;
quit;
quit komutuyla birlikte mysql’ den ayrilip shell’ e geri donuyoruz.
Simdi sirada pure-ftpd serverimizin ayarlarina geldi. Oncelike MySQL connection olaylarina girelim.
/etc/pure-ftpd/db/mysql.conf
dosyasini acalim ve asagidaki sekilde editleyim.
MYSQLSocket /var/run/mysqld/mysqld.sock
#MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser dinopsys
MYSQLPassword dinopsifre
MYSQLDatabase pureftpd
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”)
Tabi db name, db user ve db pass editlemeyi unutmayin. Gerisi aynen kalabilir.
/etc/pure-ftpd/conf/ChrootEveryone
dosyasini olusturalim ve icine sadece
yes
yazip kaydedelim.
/etc/pure-ftpd/conf/CreateHomeDir
dosyasinida olusturalim ve onada ayni sekilde sadece yes yazip kaydedelim.
Son ayarlarimizin aktif olmasi icin ftp serverimiza restart atalim
/etc/init.d/pure-ftpd-mysql restart
Simdi sirada bir ftp useri olusturmak var bunu cesitli yollarla daha kolay yapabilirsiniz. Tavsiyem Webmin olacaktir. Phpmyadmin vs. kullanabilirsiniz. Ama biz bu yazida shell uzerinden mysql databaseimize data girecegiz.
mysql -u root -p
Sifrenizi girip MySQL’ e login olun
USE pureftpd;
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES (‘dinopsys’, ‘1’, MD5(‘dinopsyssifre’), ‘2007’, ‘2007’, ‘/var/www/www.dinopsys.net’, ‘0’, ‘0’, ”, ‘*’, ‘0’, ‘0’);
quit;
Kisaca ne yaptigimiza deginelim. Ftp kullanici adi olarak dinopsys, sifre olarak dinopsyssifre verdik sistem kullanicimiz olan dinopuser’ in user ve grup idlerini verdik. Home dizini olarak /var/www/www.dinopsys.net klasorunu, upload ve download limiti olarak ta unlimited yetki verdik. Yorum bolumu bos biraktik, tum iplerden erisim saglanmasi icin asteriks (*) karakterini verdik Kota lar icinde unlimited anlamina gelen 0 degerini verdik. Anlayacaginiz kullanicimiza istedigimiz kadar kota verebiliriz, istedigimiz kadar download ve upload limiti verebiliriz en onemlisi accounta hangi ipden ulasilacagini belirleyebiliriz. Pure-Ftpd’ nin imkanlari ve ozellikleri sizinde gordugunuz uzere bir hayli fazla…
Simdi test edelim.
Herhangi bir ftp programi ile baglanip dosya atmaya, dosya cekmeye calisin. Bu arada /var/www/www.dinopsys.net dizini yok ise ftp serverimiz onu otomatik olusturacak ve yetkilerini ayarlayacaktir. Ancak bu dizin var ise dizinin yetkilerini;
chown -R dinopuser:dinopgroup /var/www/www.dinopsys.net
seklinde degistirmeniz gerekmektedir. Aksi takdirde FTP servera login olabilir dosya download edebilir ancak dosya upload edemezsiniz.
2 Responses
abi çok güzel bi r yazı olmuş ama mysql 5 de sql cümlecikler i hata veriyor php my adminde kendim yapmaya çalıştım olmadı enum değişkeninin uzunluk değeri ne olacak onu bulamadıum
Aldigin hatayi soylersen cozum uretebiliriz belki..