Explicam intr-un articol anterior cum putem gestiona utilizatorii virtuali in Pure-FTPd. Folosind comanda pure-pw putem crea, sterge sau modifica utilizatori. E destul de usor de facut, dar daca dorim sa integram Pure-FTPd intr-un sistem complex de gestiune a utilizatorilor parca nu mai e la fel de placut sa apelam functii. Pentru situatii de genul acesta exista suport pentru MySQL in Pure-FTPd. Pentru a ne folosi de MySQL avem de urmat cativa pasi simpli:
Pregatim baza de date
Ca sa ne putem folosi de MySQL avem nevoie de o baza de date care sa contina o tabela si un utilizator care sa poata accesa baza de date MySQL. Pentru asta ne conectam la consola MySQL si rulam urmatoarele comenzi:
mysql> CREATE DATABASE ftpusers; mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON ftpusers.* TO 'ftpusers'@'localhost' IDENTIFIED BY 'ap2ngA'; mysql> FLUSH PRIVILEGES;
Acum avem baza de date ftpusers iar pentru accesarea acesteia folosim utilizatorul ftpusers cu parola ap2ngA. Urmatorul pas este crearea tabelei care pastreaza datele utilizatorilor. Pentru asta vom rula in consola MySQL urmatorul query:
CREATE TABLE IF NOT EXISTS `users` ( `User` VARCHAR(32) NOT NULL, `Password` VARCHAR(32) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', `Uid` INT(11) NOT NULL DEFAULT '14', `Gid` INT(11) NOT NULL DEFAULT '101', `Dir` VARCHAR(256) NOT NULL, `QuotaFiles` INT(10) NOT NULL DEFAULT '5000', `QuotaSize` INT(10) NOT NULL DEFAULT '100', `ULBandwidth` INT(10) NOT NULL DEFAULT '256', `DLBandwidth` INT(10) NOT NULL DEFAULT '256', `Ipaddress` VARCHAR(15) NOT NULL DEFAULT '*', `Comment` tinytext, `Status` enum('0','1') NOT NULL DEFAULT '1', `ULRatio` SMALLINT(5) NOT NULL DEFAULT '0', `DLRatio` SMALLINT(5) NOT NULL DEFAULT '0', PRIMARY KEY (`User`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Acum avem baza de date pregatita. Putem merge mai departe.
Modificam pure-ftpd.conf
Pentru ca serverul Pure-FTPd sa stie ca utilizatorii trebuie preluati din MySQL vom adauga o directiva care sa ii spuna locatia fisierului care contine queryurile si setarile pentru conectarea la serverul MySQL. Asadar vom adauga in fisierul pure-ftpd.conf urmatoarea linie:
MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf
E de preferat ca fisierul pureftpd-mysql.conf sa fie in aceeasi locatie cu pure-ftpd.conf pentru o mai buna organizare. Fisierul pureftpd-mysql.conf, daca nu exista deja, il vom crea cu urmatorul continut:
MYSQLServer localhost MYSQLSocket /tmp/mysql.sock MYSQLUser ftpusers MYSQLPassword ap2ngA MYSQLDatabase ftpusers MYSQLCrypt md5 MYSQLGetPW SELECT Password FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R") MYSQLGetUID SELECT Uid FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R") MYSQLGetGID SELECT Gid FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R") MYSQLGetDir SELECT Dir FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R") MySQLGetQTAFS SELECT QuotaFiles FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R") MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R") MySQLGetRatioUL SELECT ULRatio FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R") MySQLGetRatioDL SELECT DLRatio FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R") MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R") MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
Aici am ajuns in punctul in care putem da un restart serverului Pure-FTPd iar mai departe utilizatorii vor fi cititi din baza de date, nu din fisierul pureftpd.passwd cum ar fi normal. Mai departe putem trece la crearea utilizatorilor.
Cream utilizatorii virtuali
Acum ca e totul functional, ne conectam la consola MySQL (sau phpMyAdmin daca este instalat) si rulam urmatorul query:
INSERT INTO `ftpusers`.`users` ( `User` , `Password` , `Uid` , `Gid` , `Dir` , `QuotaFiles` , `QuotaSize` , `ULBandwidth` , `DLBandwidth` , `Ipaddress` , `Comment` , `Status` , `ULRatio` , `DLRatio` ) VALUES ( 'lamp', '4c336e5111b965561840752a5f49b89c', '1234', '1234', '/var/www/www.lamp.ro', '5000', '100', '256', '256', '*', '', '1', '0', '0' );
Tocmai am creat primul utilizator. Numele de utilizator este lamp iar parola in md5 este 4c336e5111b965561840752a5f49b89c (adica Ljs53FJ8).
Ce trebuie avut in vedere e sa setam corect campul Uid, care ii va spune serverului Pure-FTPd care este utilizatorul real sub care vor fi factiunile – implicit, proprietarul real al fisierelor uploadate. Celelalte campuri sunt sugestive: QuotaFiles impune restricitie pe numarul de fisiere, QuotaSize limiteaza spatiul pe disc etc.
Popularity: 5% [?]





Știi vreo interfață web open source care să administreze tabela users a lui pure-ftpd (adăugare, modificare, ștergere)?
Salut,
Ceva facut special pentru Pure-FTPd nu stiu. Eu folosesc phpMyAdmin. Tabela e simpla si usor de inteles, iar dupa doua-trei modificari te descurci fara sa mai ai nevoie de altceva
Exista ceva aplicatii (chiar si web) pentru administrarea userilor : http://www.debianhelp.co.uk/pureftpweb.htm
Merci de completare, Smash!
Salut, Segiu
Multuemsc de tutorial, e superb, am facut zilele acestea un server FTP pe pure-ftpd si merge bine…
am o mica intrebare… cand ma loghez de pe un browser (ex. Firefox) cum sa ma deloghez? Am incercat mai mult si nu pot sa ma deloghez, am inchis browseul si cand l-am descis si am accesat din nou ftp://adresa se conecteaza automat pe contul pe care am intrat mai inainte, fara ami cere din nou logare… cum sa rezolv aceasta problema?
am incercat pe google chrome dar nu pot accesa ftp://adresa, e problema la google chrome sau in setarile mele la serverul FTP?
Multumesc
Salut,
Asta e o chestie care tine de browser si din server nu poti face mai nimic. E la fel ca in cazul autentificarii web din Apache, trebuie sa astepti pana cand expira sesiunea (MaxIdleTime).
O alternativa in Firefox ar fi Edit > Preferences > Privacy, bifezi “Clear history when Firefox closes” si apoi click pe Settings si bifezi “Active Logins”. Asa se pierde sesiunea odata cu inchiderea browserului.
Ok, Sergiu
Multumesc de explicatie
O zi buna sa ai
Buna, Sergiu
Am o rugaminte…
Eu la server am inchise porturile, si evident nu pot accesa serverulFTP, am deschis portul 21, si pot accesa, insa nu pot naviga prin Foldere, ma folosesc de FileZilla
iata ce imi arata in terminal:
Stare: Conectare la 188.244.17.117:21…
Stare: Conexiune stabilită, aștept mesajul de întîmpinare…
Răspuns: 220–––- Welcome to Pure-FTPd [privsep] [TLS] –––-
Răspuns: 220-You are user number 4 of 50 allowed.
Răspuns: 220-Local time is now 10:12. Server port: 21.
Răspuns: 220-IPv6 connections are also welcome on this server.
Răspuns: 220 You will be disconnected after 15 minutes of inactivity.
Comandă: USER raduzvigunov
Răspuns: 331 User raduzvigunov OK. Password required
Comandă: PASS ***********
Răspuns: 230-Your bandwidth usage is restricted
Răspuns: 230-User raduzvigunov has group access to: ftpgroup
Răspuns: 230-OK. Current restricted directory is /
Răspuns: 230-5 files used (0%) – authorized: 50000 files
Răspuns: 230 181 Kbytes used (0%) – authorized: 1024000 Kb
Comandă: OPTS UTF8 ON
Răspuns: 200 OK, UTF-8 enabled
Stare: Conectat
Stare: Preiau lista de dosare…
Comandă: PWD
Răspuns: 257 “/” is your current location
Stare: Listarea dosarului a avut succes
Stare: Preiau lista de dosare…
Comandă: CWD /AnaLazar
Răspuns: 250 OK. Current directory is /AnaLazar
Comandă: TYPE I
Răspuns: 200 TYPE is now 8-bit binary
Comandă: PASV
Răspuns: 227 Entering Passive Mode (188,244,17,117,181,129)
Comandă: MLSD
Eroare: Conexiune expirată
Eroare: Nu pot obține lista dosarelor
Cum sa aflu cu ce porturi mai lucreaza FileZilla ca sa le deschid de la routerul meu?
Multumesc Mult
Cauta in pure-ftpd.conf directiva PassivePortRange. Intervalul respectiv de porturi e folosit si ar trebui sa permiti comunicarea.