Domovské stránky Daniela Hrotka

ÚVOD | O MNĚ | O BOHU | ICT | ASTRO | SRANDA | RADIO | Hi-Fi | ODKAZY | KONTAKT

Pure-FTPd na FreeBSD


Autorem následujícího návodu je M. Mastenbroek. Originální - holandskou versi a překlad do jazyka anglického naleznete na stránkách autora.


Český překlad zpracoval dne 20. 11. 2005 Daniel Hrotek.

Předmluva

Požadavky

Krok 1. - instalace Pure-FTPd & MySQL

Krok 2. - vytvoření MySQL databáze

Krok 3. - nastavení Pure-FTPd

Krok 4. - start Pure-FTPd

Možnost využití dalšího software

Instalace ’Uživatelského manažeru pro Pure-FTPd’ (nepovinné)

HTML výstup příkazu pure-ftpwho (nepovinné)

Často kladené dotazy (F.A.Q.)

Odkazy na jiné zdroje





Předmluva



Návod popisuje příklady nastavení Pure-FTPd serveru (Pure-FTPd - česky) v operačním systému FreeBSD v kombinaci s MySQL.
Žlutě zbarvené písmo Vám ukáže, co budete zapisovat do příkazového řádku.

Předtím, než jsem počal užívat Pure-FTPd jsem zkoušel téměř všechny FTP servery pro FreeBSD. Velkou výhodou Pure-FTPd je možnost mnoha voleb pro každý samostatný účet zvlášť. Shledal jsem, že Pure-FTPd je nejlepší volba pro FreeBSD.

Některé z výhod Pure-FTPd:



Požadavky





Krok 1. - instalace Pure-FTPd & MySQL



Instalace serveru MySQL:

Nemáte-li ve svém operačním systému nainstalován server MySQL, budete jej muset nainstalovat. K tomu Vám dopomohou následující kroky.
Jestliže však již máte MySQL server nainstalován, pak můžete přejít přímo k instalaci Pure-FTPd.
Je možno si vybrat mezi různými versemi MySQL. Na funkci Pure-FTPd to nebude mít žádný vliv.


Zadejte následující příkazy do příkazové řádky:

cd /usr/ports/databases/mysql40-server
make install clean


Po instalaci je zapotřebí přidat následující řádky do konfiguračního souboru ’rc.conf’, který se nachází v adresáři ’/etc’.

Editujte konfigurační soubor ’rc.conf’:

# MySQL Server 4.0
mysql_enable=“YES“
mysqllimits_enable=“NO“


Po instalaci musíte spustit MySQL server:

/usr/local/etc/rc.d/mysql-server.sh start



Instalace serveru Pure-FTPd:

Zadejte následující příkazy do příkazové řádky:

cd /usr/ports/ftp/pure-ftpd
make config


Objeví se následující konfigurační menu znázorněné obrázkem. Navrhuji použití následujících voleb, které vyberete mezerníkem. Minimálně musí být zapnuta podpora MySQL.

Konfigurace Pure-FTPd


Zadejte následující příkazy do příkazové řádky:

make install clean


Po instalaci je zapotřebí přidat následující řádky do konfiguračního souboru ’rc.conf’, který se nachází v adresáři ’/etc’ stejně jako jsme to učinili u instalace MySQL výše.

Editujte konfigurační soubor ’rc.conf’:

# Pure-FTPd
pureftpd_enable=“YES“



Krok 2. - vytvoření MySQL databáze




Pure-FTPd dovoluje užití dvou typů uživatelů:

Jestliže jste se rozhodli použít ’User manager for Pure-FTPd’ (manažer uživatelů pro Pure-FTPd), můžete postupovat přímo po následujících krocích. ’Installation wizard’ (průvodce instalací) pro tento software vytvoří také tuto databázi.

Nejdříve potřebujete zprovoznit uživatele MySQL. Pouze uživatel root a nebo uživatel s dostatečnými přístupovými právy k vytvoření databáze MySQL vytvoří dvě tabulky. Vytvoří také nového uživatele MySQL databáze s omezenými právy.

K zjištění funkčnosti nového uživatele MySQL můžete použít následujícího příkazu:

MySQL -u=[uživatelskéJméno] -p[=heslo]


Pro příklad:

mysql -u root -ptajne


Jestliže to funguje, můžete pokračovat dále. V opačném případě musíte změnit Vaše heslo a uživatelské jméno. Jestliže instalují MySQL uživatelé, kteří nemají nastavena hesla, pak výše uvedený příkaz užijete bez volby ’-p.’ (Poznámka překladatele: jakékoliv vytvořené účty bez hesla je velkým bezpečnostním rizikem.)

Dalším krokem je stáhnutí instalačního skriptu a vykonání následujícího příkazu:

fetch “http://machiel.generaal.net/files/pureftpd/v2.x/script.mysql“
mysql -u root -psecret < script.mysql


Poznámka překladatele: při nedostupnosti výše zmíněné cesty ke skriptu, můžete využít následující cestu:

fetch “http://www.starhill.org/dan/pure-ftpd-freebsd/script.mysql“
mysql -u root -psecret < script.mysql


Provede-li se vše bez chybového hlášení, pak sql skript vykonal svou práci. vytvořte nyní databázové uživatele ’ftp’ a ’ftpuser’ s dvěma tabulkami (uživatelská jména a hesla - viz výše).
Nevykonávejte však výše uvedený příkaz dvakrát, vedlo by to k chybám.



Krok 3. - nastavení Pure-FTPd




Tato konfigurace Pure-FTPd serveru vyžaduje s použitím MySQL databáze vyžaduje dva následující konfigurační skripty:
  1. pure-ftpd.conf: Tento soubor obsahuje hlavní nastavení Pure-FTPd serveru. Například: maximální množství klientů nebo umístění log souborů.
  2. pureftpd-mysql.conf: Tento soubor říká PureFTPd jak má zacházet s databází.

Do adresáře ’/usr/local/etc’ nakopírujte oba výše zmíněné konfigurační soubory. První se nachází zde. (Případně jej můžete stáhnout ze serveru www.StarHill.org zde.) V těchto mnou uvedených je provedeno mnoho změn, které Vám budou ku prospěchu.

Druhý stáhnete následujícím způsobem:

cd /usr/local/etc
cp pure-ftpd.conf.sample pure-ftpd.conf
fetch “http://machiel.generaal.net/files/pureftpd/v2.x/pureftpd-mysql.conf“


Při nedostupnosti prvního serveru můžete využít druhý server:

cd /usr/local/etc
cp pure-ftpd.conf.sample pure-ftpd.conf
fetch “http://www.starhill.org/dan/ict/pure-ftpd-freebsd/pureftpd-mysql.conf“


Nyní máte oba konfigurační soubory. Budete potřebovat trochu pozměnit první z nich se jménem ’pure-ftpd.conf’. Editujte řádku se jménem ’MySQLConfigFile’.

Zaeditování vypadá následovně:

# MySQL configuration file (see README.MySQL)
MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf



Krok 4. - start Pure-FTPd




Pro start Pure-FTPd musíte zadat následující příkaz:

Zadejte následující příkaz do příkazové řádky:

/usr/local/etc/rc.d/pure-ftpd.sh start


A pokud byste si přáli zastavit server, pak užijte příkaz: ’/usr/local/etc/rc.d/pure-ftpd.sh stop’

Nyní můžete spravovat účty virtuálních uživatelů s použitím grafické nadstavby pro MySQL.
Můžete využít různých grafických nadstaveb pro MySQL, které jsou dostupné na http://www.mysql.org. Najdete různé klienty pro operační systémy jako například FreeBSD, Windows nebo Linux. Pro FreeBSD je grafický klient dostupný v následujícím portu: ‘/usr/ports/databases/mysql-gui’.

Jiný software, který můžete používat pro správu Pure-FTPd bude popsán dále.



Možnost využití dalšího software




Uživatelský manažer pro Pure-FTPd dovolí administrátorovi snadno vytvořit, měnit, nebo vymazat virtuální uživatele v Pure-FTPd.

Avšak předtím, než můžete instalovat tento uživatelskou grafickou utilitu, potřebujete nainstalovat následující software:

Pokud máte veškeré programy výše uvedené, pak můžete tyto následující kroky přeskočit. nemáte-li je však nainstalovány, pokračujte zde:

Zadejte následující příkazy do příkazové řádky:

cd /usr/ports/www/apache2
make install clean


Po instalaci potřebujete přidat následující řádky do konfiguračního souboru ’rc.conf’, který se nachází v adresáři ’/etc’.

Editujte konfigurační soubor ’rc.conf’:

# Apache 2
apache2_enable=“YES“


Jestli nemáte nainstalovaný modul PHP pro web server Apache, pak jej můžete nainstalovat mod_php5 takto:

# Apache 2
apache2_enable=“YES“


Ujistěte se, že máte vybrán APACHE2. Během instalačního procesu zvolte Apache 2:

[X] APACHE2 Use apache 2.x instead of apache 1.3.x


Po instalaci mod_php5 byste měli přidat následující řádky konfiguračního souboru ’httpd.conf’, který se nachází v aresáři ’/usr/local/etc/apache2’.

Editujte konfigurační soubor ’httpd.conf’:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps


Přidejte také atribut ’index.php’ do ’DirectoryIndex’ parametru.

Výsledek by měl vypadat následovně (editujte):

DirectoryIndex index.php index.html index.html.var


Jestliže nemáte nainstalovány PHP Extensions, můžete využít opět následných kroku pro instalaci php5-extensions.
Zadejte následující příkazy do příkazové řádky:

cd /usr/ports/lang/php5-extensions
make config
make install clean


Během instalačního procesu Vás instalační průvodce vyzve k vybrání rozšíření, která si přejete instalovat.
Navrhuji, abyste neodstraňovali standardní výběr. Přidejte však ještě volbu rozšíření ’MYSQL’. Není totiž součástí výběru.

V každém případě jsou potřeba vybrat následující volby:

[X] MYSQL MySQL database support
[X] PCRE Perl Compatible Regular Expression support
[X] POSIX POSIX-like functions
[X] SESSION session support


Vykonali-li jste výše zmíněné změny, je potřeba web server Apache restartovat. Tím dojde k aktivování změn, které jsme spolu podnikli.

V příkazové řádce nechte vykonat tento příkaz, který restartuje web server Apache:

apachectl restart



Instalace ’Uživatelského manažeru pro Pure-FTPd’ (nepovinné)




V tomto kroku bude probrán postup pro instalaci uživatelského manažera pro Pure-FTPd:

Prvně budete muset tento manažer stáhnout a takto můžete učinit odtud, nebo také zde. Uložte jej do ’www’ adresáře Vašeho web serveru Apache.
Následující příkazy vyextrahují ’config.php’ a změní přístupová práva. Server Apache má potom práva měnit obsah tohoto konfiguračního souboru.

V příkazové řádce vykonejte následující příkazy:

cd /usr/local/www/data
fetch “http://machiel.generaal.net/files/pureftpd/ftp_v2.1.tar.gz“
tar -xvzf ftp_v2.1.tar.gz
cd ftp
chown www config.php


V případě nedostupnosti výše uvedeného serveru můžete využít serveru záložního:

cd /usr/local/www/data
fetch “http://www.starhill.org/dan/ict/pure-ftpd-freebsd/ftp_v2.1.tar.gz“
tar -xvzf ftp_v2.1.tar.gz
cd ftp
chown www config.php


Poslední věc, kterou musíte udělat je spustit ’installation wizard’ (instalačního průvodce) ve Vašem internetovém prohlížeči, který je pojmenován ’install.php’.

Tento program Vás provede krok za krokem skrze celou konfiguraci uživatelské utility Pure-FTPd:

Konfigurace Pure-FTPd



HTML výstup příkazu pure-ftpwho (nepovinné)




S příkazem ’pure-ftpwho’ může uživatel root sledovat aktuální stav FTP serveru. Tento program je část Pure-FTPd a může být používán pouze uživatelem root. Pure-FTPd může generovat HTML kód příkazem ’pure-ftpwho’. Jeho výstup pak můžete vidět ve svém internetovém prohlížeči. Dokáže vytvořit cgi aplikaci, která pak spolupracuje s vaším web serverem. Problémem však je, že vykonání cgi aplikace nemůže být vykonáno na úrovni root uživatele a to z bezpečnostních důvodů. Tento problém jsem vyřešil následovně:

Vytvořte následující soubor ’ftpstatus.c’ v adresáři Vašeho web serveru, který je pojmenován: ’cgi-bin’. Standardní cesta k tomuto adresáři pro server Apache je ’/usr/local/www/cgi-bin/’.

#include <stdlib.h>

int main(int argc, char *argv[])
{
  system(“/usr/local/sbin/pure-ftpwho -H -w“);
  return 0;
}


Zkompilujte a změňte přístupová práva dle následujících příkazů. Od této chvíle bude mít soubor vždy vlastníka s danými přístupovými právy. V tomto případě je to uživatel root.

cc -Wall -o ftpstatus ftpstatus.c
chmod 755 ftpstatus
chmod ug+s ftpstatus


Nyní již zdrojový soubor ’ftpstatus.c’ není potřebný a může být smazán. Stav FTP serveru můžete vidět ve Vašem internetovém prohlížeči. Adresa je něco jako ’http://mojeIPadresa.cz/cgi-bin/ftpstatus’. Samozřejmě, uveďte, prosím ’mojeIPadresa.cz’, do správného tvaru. Místo IP adresy můžete dosadit i jméno Vaší domény, kterou máte nastavenu ve web serveru Apache.

Výstup cgi aplikace ve Vašem internetovém prohlížeči může vypadat následovně:

Aktivita Pure-FTPd serveru



Často kladené dotazy (F.A.Q.)




Závisí to na konfiguraci pravidel Vašeho firewall systému. Po přidání následujících třech pravidel do Vašeho firewall systému může pak Váš FTP server ovládat pasivní a aktivní režim Vašich FTP klientů. Samozřejmě musíte dbát aby například Vámi používaný další firewall nezamítnul tato tři nastavení.

Konfigurace firewall systému:

ipfw add allow tcp from any 20,21 to any out
ipfw add allow tcp from any to any 20,21 in
ipfw add pass tcp from any to any setup



Pravděpodobně to má co dělat s NATd procesem v kombinaci s konfigurací firewall systému. Umístěte dvě následující řádky pravidel PŘED NATd pravidly firewall systému.

Konfigurace firewall systému pro FXP:

ipfw add allow tcp from any 20,21 to any out
ipfw add allow tcp from any to any 20,21 in


Poznámka: NATd firewall pravidlo bude vypadat takto: ’divert 8668 ip from any to any via xl0’. K tomuto výpisu se dostanete snadno příkazem ’ipfw show’.



Užijte Vašeho MySQL klienta a přihlaste se jako root uživatel. Poté změňte heslo uživatele ’ftp’. Vyzkoušejte dvě následující řádky. Změňte text ’zdeZapisteNoveHeslo’ pro zápis Vašeho nového hesla.

Konfigurace firewall systému pro FXP:

mysql -u root -p
set password for ftp@“127.0.0.1“ = Password(’zdeZapisNoveHeslo’);
flush privileges;


Upozornění: Jestliže měníte heslo v databázi uživatelů - například uživatele ’ftp’, pak budete muset změnit i konfigurační soubor Pure-FTPd nazývaný ’pureftpd-mysql.conf’ a jestliže využíváte i web aplikace, pak musíte změnit i konfigurační soubor ’config.php’.



Je možné Vám poskytnout všechny odpovědi. Jestli se však chcete naučit s SQL a MySQL, pak existuje mnoho portálů, kde můžete informace načerpat. Ukáži Vám několik rychlých MySQL / SQL triků.

Zálohujte všechny struktury tabulek a data z tabulek z data z databáze ’ftpusers’ do MySQL skriptu.
Text ’VaseNoveHeslo’ přepište Vaším novým heslem.

Příkazová řádka:

mysqldump -h localhost -uroot -pVaseNoveHeslo ftpusers > databasebackup.mysql


Odstraňte Vašeho uživatele MySQL nazvaného ’ftp’ a vymažte databázi ’ftpusers’.

Příkazová řádka:

mysql -u root -p
drop database ftpusers;
delete from mysql.user where User=’ftp’;
flush privileges;


Vytvořte MySQL uživatele nazvaného ’ftp’ a vytvořte databázi ’ftpusers’.

Příkazová řádka:

mysql -u root -p
INSERT INTO mysql.user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv) VALUES(’127.0.0.1’,’ftp’,PASSWORD(’tmppasswd’),’Y’,’Y’,’Y’,’Y’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’);
flush privileges;
create database ftpusers;


V části tohoto návodu ’Krok 2. - vytvoření MySQL databáze’ můžete najít příklad jakým způsobem importovat MySQL skript.



Jako častý problém se při instalaci MySQL serveru se jeví nesprávný hostname. Pak instalační procedura selže a vypíše následující chybové hlášení:

...
Sorry, the host ’???????’ could not be looked up.
Please configure the ’hostname’ command to return a correct hostname.
If you want to solve this at a later stage, restart this script with
the --force option
*** Error code 1
...

Předně zkontrolujte aktuální hostname. Hostname můžete aktuálně zjistit příkazem ’hostname’. Výstup tohoto příkazu zobrazí Váš aktuální hostname. Pakliže se neobjeví nic, budete muset Vašemu systému přiřadit hostname. Pomocí příkazu ’hostname’ nastavíme hostname operačního systému a bude se pro příklad jmenovat ’server’. Následující řádek v příkazové řádce zařídí přesně to, co potřebujeme.

Příkazová řádka:

hostname server


Přidejte následující řádek (pokud se tam již ovšem nenachází): hostname=“server“ do konfiguračního souboru ’rc.conf’, který se nachází v adresáři ’/etc’.

Tento hostname musíme svázat s IP adresou Vašeho operačního systému. Tuto akci provedeme editací konfiguračního souboru ’hosts’, jenž je umístěn v adresáři ’/etc’. V řádku konfiguračního souboru, který vidíte následně v tabulce je Vaše hostname - ’server’ a IP adresa Vašeho počítače - například ’192.168.0.1’. Editovat můžete tento soubor pomocí editoru vi, edit, či jiného (poznámka překladatele - programem edit provedete tuto akci následovně: edit /etc/hosts; nebo například pomocí editoru vi /etc/hosts).

Příkazová řádka:

192.168.0.1        server


Nyní můžeme kontrolovat hostaname. Provedeme to násedujícím příkazem (naše hostname je nastaveno na ’server’ - dosaďte tedy místo ’hostname’ v následujícím příkazu ’server’):

ping (hostname)


Vidíte-li odezvu, můžete pokračovat v instalaci MySQL.



Instalační procedura balíku Pure-FTPd se může lišit v různých distribucích operačního systému Linux. Mnoho balíků Pure-FTPd pro operační systém Linux nemá v sobě zahrnutu podporu MySQL. pro eliminaci tohoto problému je nasnadě možnost stáhnutí zdrojového kódu a jeho sestavení s potřebnými volbami. Vše toto je vidět z následujících kroků.

Stáhněte poslední versi Pure FTPd, například odtud: ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/

Extrahujte soubory. sestavte zdrojový kód a nainstalujte Pure-FTPd.

Příkazová řádka:

./configure --with-everything --with-paranoidmsg --with-virtualchroot --with-tls --with-largefile --with-mysql
make
make install


Po těchto krocích je Pure-FTPd nainstalován ve Vašem operačním systému se všemi nezbytnými volbami.



Odkazy na jiné zdroje




http://www.pureftpd.org/
Portál vývojářů Pure-FTPd. (Česky na této adrese.)
http://www.solariz.de/files/pureftpd_php_manager.zip
Jiný PHP skript řízení virtuálních uživatelů Pure-FTPd. (Stahovat můžete i odtud.)
http://www.google.com/bsd
A samozřejmě můj oblíbený favorit ve vyhledávání www.google.com nebo www.google.com/bsd.
http://machiel.generaal.net/index.php?subject=pureftpd
Tento návod, který nyní čtete v českém jazyce můžete číst v holandštině a angličtině na stránkách autora.
Operační systémy
 povídání o FreeBSD začínáme s FreeBSD FreeBSD - základní kroky Sun Solaris - základní kroky Linux - základní kroky Windows - základní kroky
 
Hrátky s operačními systémy
 FreeBSD router FreeBSD ve firmě FreeBSD porty - jak na ně? vytváření FreeBSD balíčku instalace NetBSD
 
Počítačové sítě
 StarHill esej o bezdrátových sítích pasivní restranslace tvorba sítí typu ethernet Pure-FTPd + SSL + VA Samba a její nastavení Apache SSL - htaccess - PHP DHCP server Nessus
 
Lokalizace
 manuály FreeBSD RONJA Pure-FTPd nastavení Pure-FTPd
 
Software
 Visual Basic Acrobat Reader 5 a FreeBSD logovací démon - syslogd
 
Jednočipy
 programátor PIC
 
Různé
 mé konfigurační soubory