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.

Categories:

Tags:

2 Responses

  1. 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

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir