SASA DESIGN

Open Your mind, Open Your Source Code!

PureFTPd с MySQL потребители в Debian

30 април, 2008 – 12:12 pm

Автор: Kulu Ngile

Целта на статията е да се инсталира ftp сървър, като се използват виртуални потребители от MySQL, а не потребители от системата. Също така ще използваме ограничения на upload и download скоростта, както и MD5 на паролата в MySQL.

1. Инсталиране на MySQL и phpmyadmin

Код:
samba:~# apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin

Ще ви бъдат зададени въпроси за:
- root акаунт и парола на MySQL
- кой web server искате да се конфигурира автоматично -> задайте apache и apache2
- съгласете се за рестартиране на apache-то

2. Инсталиране на PureFTPd с MySQL поддръжка

Код:
samba:~# apt-get install pure-ftpd-mysql

Като изберете standalone server и откажете setuid root.

Ще създадеме ftp user sasa и ftp group sasagroup, където всички наши виртуални потребители ще бъдат мапвани. Ще зададем id на потребителя и групата да е 2222, като вие можете да ползвате, които искате, стига да са свободни.

Код:
samba:~# groupadd -g 2222 sasagroup
samba:~# useradd -u 2222 -s /bin/false -d /bin/null -g sasagroup sasa

3. Създаване на база данни за PureFTPd и потребителски акаунт
- логваме се в phpmyadmin (http://localhost/phpmyadmin)
- избираме „Привилегии“ -> „Добавяне на нов потебител“
създаваме:
user-> sasa
host-> localhost
pass-> password

Снимка

Повтаряме процедурата, като променяме само host-а, т.е.:
user-> sasa
host-> localhost.localdomain
pass-> password

Снимка

- избираме „База от данни“ и създаваме нова с име sasaftp

Снимка

П.П. При мен вече е създадена, но при вас няма да е и просто ви показвам откъде се прави Smile

- създаваме таблица ftptable с брой на полетата 9 (при мен отново е създадена Razz)

Снимка

- Задаваме следните настройки
1-во поле: User -> varchar-> 16 -> PRIMARY KEY
2-ро поле: Status-> enum ’0′,’1′ ->default 0
3-то поле: Password-> varchar ->64
4-то поле: UID -> varchar ->11 ->default -1
5-то поле: GID -> varchar -> 11 ->default -1
6-то поле: DIR -> varchar -> 128
7-мо поле: DLBandwidth -> smallint ->5 -> default 0
8-мо поле: ULBandwidth -> smallint ->5 -> default 0
9-то поле: IP -> varchar-> 15 -> *

Снимка

- задаме права на кулу за контрол в/у базата данни sasaftp
* От левият панел избираме HOME и след това от десният панел избираме привилегии
Снимка
* Маркираме sasa и натискаме бутона за редактиране (моливчето Smile)
* От „Привилегии специфични за базата от данни“ избираме БД-то sasaftp
Снимка

* Задаваме следните права: SELECT, INSERT, UPDATE, DELETE, CREATE и DROP
Снимка

Повтаряме процедурата за другият акаунт на sasa с хост local.localdomain

- създаване на потребител, който ще се логва – от левият панел избираме sasaftp и кликаме в/у ftptable; от десният панел кликаме на „Вмъкване“. Създаваме нов потребител със следните параметри:
User: sasa
Status: 1
Password: sasapass
UID 2222
GID 2222
DIR /home/ftp_store
DLBandwidth 200
ULBandwidth 200
IP *

Снимка

4. Нстройка на PureFTPd
- редактирайте /etc/pure-ftpd/db/mysql.conf, като трябва да изглежда по следният начин (ако ползвате друг user вместо sasa Crying or Very sad, не забравяйте да смените освен MYSQLUser и MYSQLPassword)

Цитат:
MYSQLSocket /var/run/mysqld/mysqld.sock
#MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser sasa
MYSQLPassword password
MYSQLDatabase sasaftp
#MYSQLCrypt md5, cleartext, crypt() or password() – md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftptable WHERE User=“\L“ AND Status=“1″ AND (IP = „*“ OR IP LIKE „\R“)
MYSQLGetUID SELECT UID FROM ftptable WHERE User=“\L“ AND Status=“1″ AND (IP = „*“ OR IP LIKE „\R“)
MYSQLGetGID SELECT GID FROM ftptable WHERE User=“\L“AND Status=“1″ AND (IP = „*“ OR IP LIKE „\R“)
MYSQLGetDir SELECT DIR FROM ftptable WHERE User=“\L“AND Status=“1″ AND (IP = „*“ OR IP LIKE „\R“)
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftptable WHERE User=“\L“AND Status=“1″ AND (IP = „*“ OR IP LIKE „\R“)
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftptable WHERE User=“\L“AND Status=“1″ AND (IP = „*“ OR IP LIKE „\R“)

- създаваме файла /etc/pure-ftpd/conf/ChrootEveryone със съдържание „yes“.

Код:
samba:~# echo „yes“ >/etc/pure-ftpd/conf/ChrootEveryone

Така ще накараме pureftpd-то да chroot-ва всеки юзър в собствена домашна папка, с което забраняваме браузването извън неговият home folder

- създаваме файла /etc/pure-ftpd/conf/CreateHomeDir с параметър „yes“.

Код:
samba:~# echo „yes“ > /etc/pure-ftpd/conf/CreateHomeDir

Така ще се създаде home folder-a на потребителя, ако не съществува при първото логване.

- рестартраме pureftpd

Код:
samba:~# /etc/init.d/pure-ftpd-mysql restart

5. Тестване – аз използвам ncftp клинет, който е конзолен и ми е много удобен. Ето го и резултата:

Код:
[sasa@debian wall]$ ncftp -u sasa -p sasapass ftp://192.168.0.2
NcFTP 3.2.1 (Jul 29, 2007) by Mike Gleason (http://www.NcFTP.com/contact/).
Connecting to 192.168.0.2…
——— Welcome to Pure-FTPd [privsep] [TLS] ———-
You are user number 1 of 50 allowed.
Local time is now 02:13. Server port: 21.
This is a private system – No anonymous login
IPv6 connections are also welcome on this server.
You will be disconnected after 15 minutes of inactivity.
Logging in…
Your bandwidth usage is restricted
User sasa has group access to: sasagroup
OK. Current restricted directory is /
Logged in to 192.168.0.2.
Current remote directory is /.
ncftp / >

Ще кача една картинка.

Код:
ncftp / > put debian.jpg
debian.jpg: 148,93 kB 196,05 kB/s
ncftp / > ls
debian.jpg
ncftp / >

За да видим резултата през iceweasel-a въвеждаме следният линк-> ftp://sasa@192.168.0.2, въвеждаме паролата си и трябва да видим качената снимка

Снимка

Източник

Напиши коментар