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
П.П. При мен вече е създадена, но при вас няма да е и просто ви показвам откъде се прави 
- създаваме таблица ftptable с брой на полетата 9 (при мен отново е създадена
)
- Задаваме следните настройки
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 и натискаме бутона за редактиране (моливчето
)
* От „Привилегии специфични за базата от данни“ избираме БД-то 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
, не забравяйте да смените освен 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, въвеждаме паролата си и трябва да видим качената снимка