Burak Çalışkan

Pure-FTPD Mysql Kurulumu

  • 8 sene önce, Burak Çalışkan tarafından yazılmıştır.
  • Pure-FTPD Mysql Kurulumu için yorumlar kapalı
  • FreeBSD

Bilindiği gibi olukça güvenli bir yapı sağlayan güzel bir FTP sunucusudur. ile sistem kullanıcılarından farklı olarak sanal kullanıcılar oluşturabilir ve oluşturduğunuz bu sanal kullanıcıları mysql üzerinde tutabilirsiniz.

’nin sunduğu bu güzel özellik sayesinde, ftp kullanıcılarınıza ait hesapları, gerçek sistem kullanıcılarınızdan ayırmış oluyorsunuz. Her ne kadar bu özellik belli başlı diğer FTP sunucularında da bulunuyor olsa da, ’nin default olarak gelen daha bir çok güzel özelliği bulunuyor. Bu nedenle kullanmanızı öneririm.

Bu makalede 7.0 üzerine mysql destekli kurulumu ile ilgili notları bulabilirsiniz.

Kurulumu yapabilmek için öncelikli olarak MySQL Server kurulu olmalı. Eğer kurulu değilse önce bu işi halledin. ’de kurulumları genel olarak port ağacından yapıyorum.

Not: Eğer ports ağacı sisteminizde kurulu değilse portsnap ile yükleyebilirsiniz.

Port ağacından aşağıdaki gibi MySQL kurulumu yapın.

Not: Sisteminizde hali hazırda kurulu ise bu adımı atlayın.

Herhangi ek bir özellik şeçmenize gerek yok.

MySQL server ilk kurulduğunda root şifreleri boş olarak gelir. Bu nedenle bir root şifresi tanımlamak gerekiyor. Aşağıdaki adımları uygulayarak bu işlemi yapın.

Mysql server hazır ise, Pure-FTPD kurulumuna geçebiliriz. Bu iş için de port ağacından yararlanıyoruz. Aşağıdaki adımlarla kurulumu yapın.

Not: make install dediğiniz zaman gelen options ekranından MySQL’i seçin.

Pureftpd pearl’e ihtiyaç duyduğu için sisteminizde yüklü olmaması halinde bu paket de kurulacaktır. Bu nedenle kurulumun tamamlanması biraz zaman alabilir.

pure-ftpd’nin örnek konfigürasyon dosyaları ön tanımlı olarak /usr/local/etc dizini altında ve start stop scripti /usr/local/etc/rc.d altında pure-ftpd ismi ile durmaktadır. Biz pure-ftpd’yi mysql destekli kullanacağımızdan dolayı /usr/local/etc dizini altında ki iki dosyadan yararlanacağız. Ancak şimdilik mysql tarafındaki ayarları yapacağız.

Önce, mysql’de pureftpd için oluşturulacak database’e erişim için kullanılacak bir hesap açıyoruz.

Mysql’e bağlanın:

Önce database’i oluşturuyoruz:

Not: Örnek komutta db’yi pureftpd ismi ile açıyoruz. Siz farklı bir isim verebilirsiniz.

Ardından tabloyu create edin:

Gördüğünüz gibi, pureftpd’nin kullanıcılara uygulayacağı bandwidth, quota vs. gibi ayarlar da mysql tablosunda tutuluyor. FTP sunucusuna kullanıcı eklerken bu sınırlamalara değineceğim.

Şimdi de son olarak aşağıdaki şekilde -kırmızı ile işaretli kullanıcı ve şifre alanlarını düzenlemeyi unutmayın- bu db’ye erişecek bir kullanıcı oluşturuyoruz.

Database ve kullanıcı oluşturulduğuna göre pure-ftpd konfigürasyonunu tamamlayabiliriz.

Aşağıdaki şekilde örnek dosyaların birer kopyasını alarak ana conf dosyalarını oluşturun.

Bu dosyaları editlemeden önce, pure-ftpd’nin açılışlarda otomatik olarak başlaması için /etc/rc.conf dosyasına aşağıdaki komutla pure-ftpd enable satırını girin. Ancak pureftpd’yi henüz başlatmayacağız.

Şimdi, pureftpd’nin ftp kullanıcıları için kullanacağı sistem hesabını ve grubunu ekleyelim.

Gördüğünüz gibi sisteme login yetkisi olmayan bir kullanıcı ve bir grup ekledik. Pureftpd bu kullanıcının yetkilerini, sanal ftp kullanıcıları için kullanacak. Yani tek bir sistem hesabı ile birden çok sanal kullanıcı oluşturabileceğiz. Biraz sonra sanal bir kullanıcı açarken bu sistem hesabının UID ve GID değerlerini pureftpd’ye bildireceğiz.

Şimdi de pureftpd conf dosyalarındaki işlemleri yapalım.

Önce pureftpd-mysql.conf dosyasındaki yapılandırma işlemlerini halledelim.

Aşağıdaki gibi ilgili dizine gidin ve biraz önce örnek dosyadan kopyalayarak oluşturduğumuz dosyanın içeriğini boşaltın. (Satırların açıklamalar için sample.cfg dosyasını kullanabileceğimiz için bunun bir sakıncası yok.)

Elimizdeki boş cfg. dosyası editleyerek içerisine aşağıdaki satırları paste edin ve kaydedin.

Not: Kırmızı ile işaretli bölümleri kendi belirlediğiniz db adı, kullanıcı ve şifre ile değiştirmeyi unutmayın.

Görüldüğü gibi pureftpd bu dosyadaki select sorgularından yararlanarak kullanıcılara ait tüm bilgileri çekiyor.

Şimdi de ana conf dosyası olan pure-ftpd.conf dosyasındaki ayarları yapalım.

Tekrardan dosyanın içeriğini boşaltacağız.

Ve boş olan bu dosyayı editleyerek aşağıdaki satırları ekleyin ve kaydedin.

Bu satırların açıklamalarına aynı dizindeki pure-ftpd.conf.sample dosyasından bakabilirsiniz, ancak önemli olan bir ikisi ile ilgili açıklamaları vermek istiyorum.

ChrootEveryone Burada yes diyoruz ve kullanıcıları home dizinlerine hapsediyoruz. Bildiğiniz gibi tüm sanal kullanıcılar için bir adet gerçek sistem hesabı kullanılıyor. Bu nedenle kullanıcıları chroot yapmazsanız, herkes herkesin dizinlerini okuyabilir ve yazabilir.

AnonymousOnly Buraya no diyoruz ve sunucunun anonim bir ftp sunucusu olmadığını belirtiyoruz.

NoAnonymous Anonim isteklere izin vermiyoruz. Kimlik doğrulaması şart.

MySQLConfigFile Mysql’e bağlanmak ve select ile bilgi çekmek için kullanılan conf dosyasının yeri.

Umask Upload edilen dosya ya da dizinler için verilecek umask değeri. Bizim örneğimizde umask değeri 027:027 veriliyor. Yani 777 – 027 = 750. Owner’a full yetki, gruba okuma ve listing. Bu konuyla ilgili küçük bir örnek vermek gerekirse. FTP sunucunuzun bir web sunucusu ile birlikte çalıştığını ve webmaster’ın ftp üzerinden dosyalara erişmesi gerektiğini düşünelim. Bu dizin için owner’i ftp kullanıcıları için açtığınız sistem hesabı ve grup olarak da apache’nin grubunu belirlerseniz ilgili ftp kullanıcısı bu dizine yazıp çizebilirken apache sadece okuyabilir ve list çekebilir.

NoChmod No diyerek kullanıcılara permission değiştirme yetkisi vermiyoruz.

CreateHomeDir Bu bölümde yes derseniz, sistemde home dizini bulunmayan bir kullanıcı login olduğu zaman mysql’den çekilen path’e göre ilgili dizin oluşturulur. No demeniz durumunda açtığınız ftp hesaplarının home dizinlerinin sistemde bulunması gerekir.

Önemlilerinden bir kaç özellik bu şekildeydi. Ancak sample dosyasını okumanızı ve diğer özellikler hakkında bilgi almanızı öneririm.

Konfigürasyon işleri de bittiğine göre pureftpd’yi start edebiliriz.

Son olarak da test edebilmek için bir kullanıcı açalım ve bu kullanıcı ile bir bağlantı denemesi yapalım. Kullanıcıları pureftpd database’indeki users isimli tabloya ekleyerek açıyoruz.

Komut satırından bir kullanıcı ekleyelim.

Önce mysql’e bağlanıyoruz:

Sonra da aşağıdaki gibi bir insert satırını kırmızı alanları kendimize göre düzenledikten sonra giriyoruz.

Not: Kullanici adi ve sifre’den sonra gelen 1007 ibareleri sistemde actigimiz ftpusers/ftpgroups kullanici ve gruplarının UID/GID değerleridir. Dolayısı ile siz buraya kendi sisteminizdeki UID ve GID değerlerini girmelisiniz. Ilgili UID ve GID bilgilerine ulaşmak için aşağıdaki komutları kullanabilirsiniz.

UID için komut ve çıktısı:

GID için komut ve çıktısı:

UID ve GID değerlerini bildirmezseniz permisson sorunları yaşamanız muhtemeldir. Bu UID ve GID pureftpd tarafından kullanıcı dizinlerinde kullanılmaktadır.

Bunun dışında, yukarıdaki mysql insert cümlesi ile herhangi bir sınırlama getirilmemiş bir kullanıcı açtık; ancak bantgenişliği kullanımı ya da quota ile ilgili sınırlamalar getirmek istiyorsanız. users isimli tablonun yapısını inceleyebilirsiniz.

Ben kullanıcıyı direk mysql komut satırından açtım ancak siz bu iş için webmin ya da sqlyoq gibi bir management yazılımı kullanabilirsiniz.

Ayrıca pureftpd kullanıcılarını yönetmek üzere yazılmış User Manager for Pureftpd isimli bir php uygulaması da bulunuyor. Bunu da kullanmak isteyebilirsiniz. İlgili konu ile alakalı döküman hemen aşağıdaki kaynaklar bölümünde verilmiştir.

Hepsi bu kadar.

Kendi kullanıcınızı açtıysanız, test edebilirsiniz. Herhangi bir sorun ile karşılaşmadıysanız başarılı bir ftp bağlantısı kurmanız gerekir.