Jednou z často požadovaných služeb systému je FTP server. FTP (file transfer protocol) je protokol sloužící k přenosu souborů mezi serverem a klientem. Tento jednoduchý návod popisuje, jak nastavit FTP server v prostředí openSUSE 10.2.

Nejprve potřebujete samotný server. Na výběr máte více možností. Mezi nejznámější linuxové FTP servery patří například vsftp, ProFTP nebo Pureftp. Jejich konfigurace není až tak odlišná a najdeme zde mnoho společných rysů. Řekněme, že budeme používat Pureftpd (d na konci značí daemon, což zjednodušeně řečeno znamená aplikace běžící na pozadí jako systémová služba).

Nejsnadnější způsob, jak získat pure-ftp je pomocí smartu, záložka Productivity/Networking/Ftp/Servers. Nainstalujte si jej.

OVLÁDÁNÍ SERVERU

Nyní si spusťte konzoli a přihlaste se jako root. Systémové služby můžete v openSUSE ovládat více způsoby. Zřejmě nejjednodušší je pomocí rcxxx , kde xxx je jméno služby. Napíšete-li v terminálu rc a stisknete 2x tabulátor, bash vám vypíše seznam všech dostupných služeb. Mezi těmito službami by měla být (pokud jste korektně nainstalovali Pureftp) i položka rcpure-ftpd (pro vsftpd bude mít tvar rcvsftpd apod.). Chceme-li se tedy podívat v jakém stavu služba je, napíšeme (jako root) rcpure-ftpd status. Start provedeme pomocí rcpure-ftpd start a ukončení činnosti serveru pomocí rcpure-ftpd stop. K dispozici je i parametr restart pro rychlý restart serveru.

KONFIGURACE

Po instalaci se vám v adresáři /etc vytvoří adresář pureftpd. V něm naleznete soubor pure-ftpd.conf. Tento soubor obsahuje informace o nastavení vašeho ftp serveru. Poznámky jsou v tomto textu označeny pomocí značky #. Znamená to tedy, že cokoliv, co je napsané za touto značkou, není provedeno. Poznámek naleznete v textu velké množství. Jsou uvedeny vždy před nějakou direktivou a vysvětlují, k čemu daný příkaz je a co nastavuje. Například, položka

# Disallow anonymous connections. Only allow authenticated users.
NoAnonymous                 yes

znamená, že je-li direktiva NoAnonymous nastavena na yes, můžou se k serveru přihlásit pouze autentifikovaní uživatelé (uživatelé, kteří zadají svůj login a heslo). Bylo by příliš rozsáhlé popisovat jednotlivé položky konfiguračního souboru. Ukázkový použitelný soubor naleznete níže.

ChrootEveryone              no
TrustedGID                  100
BrokenClientsCompatibility  no
MaxClientsNumber            10
Daemonize                   yes
MaxClientsPerIP             3
VerboseLog                  no
AllowDotFiles               yes
DisplayDotFiles             yes
AnonymousOnly               no
NoAnonymous                 yes
SyslogFacility              ftp
DontResolve                 yes
MaxIdleTime                 15
PureDB                      /etc/pure-ftpd/pureftpd.pdb
PAMAuthentication           yes
LimitRecursion              2000 8
AnonymousCanCreateDirs      no
MaxLoad                     4
Umask                       177:077
MinUID                      40
AllowUserFXP                no
AllowAnonymousFXP           no
ProhibitDotFilesWrite       yes
ProhibitDotFilesRead        no
AutoRename                  yes
AnonymousCantUpload         yes
MaxDiskUsage                99
NoRename                    no
CustomerProof               yes

Nastavení si samozřejmě můžete upravit tak, jak sami potřebujete. Nezapomeňte, že po změně konfiguračního souboru je nutný restart serveru proto, aby se změny projevily.

VIRTUÁLNÍ UŽIVATELÉ

Za zmínku v uvedeném konfiguračním souboru určitě stojí položka

PureDB                      /etc/pure-ftpd/pureftpd.pdb

Toto je jedno z možných nastavení pro takzvané virtuální uživatele, což jsou uživatelé, kteří neexistují v systému, ale mají svůj účet pouze pro ftp server. Pro samotnou správu virtuálních uživatelů ve Pureftpd existuje několik nástrojů s grafickým uživatelským rozhraním. Nalézt je můžete například zde. Popis všech by vydal na samostatný článek. Já zde budu popisovat pouze kpum, což je pureftpd manažer virtuálních uživatelů pro prostředí KDE. Princip všech adminů je stejný a proto by neměl být problém pochopit jeden, když pochopíte druhý. Pomocí tohoto manažeru si můžete vytvářet jednotlivé virtuální uživatele. V souboru /etc/pure-ftpd/pureftpd.passwd se vám potom pro každého uživatele vytvoří samostatný řádek ve tvaru

uzivatel:$2a$07$VyRjlfdI4aSmy0MdzRe1dunb0CvhjapXX7CZwY6DxdyikQGu/nrku:65534:1001:Uzivatel:/srv/ftp/users/uzivatel/./::::::::::::

KPUM

Kpum bohužel nelze nalézt v uvedených repozitářích smartu, nicméně je k dispozici zde. Jedná se o zdrojové kódy, které je nutno přeložit, nicméně to není nic složitého. Je možné, že lze někde na netu nalézt i rpm verzi kpumu pro 10.2, avšak trochu o tom pochybuji, neboť vývoj kpumu bohužel zamrzl někdy ke konci roku 2004. I v této verzi však obsahuje všechny potřebné nástroje na správu uživatelů.

Zdrojové soubory si rozbalte někam na disk. Vejděte do rozbaleného adresáře a napište ./configure . Program nyní projde váš systém a bude hledat, zda má k dispozici vše, co pro svůj překlad potřebujete. Určitě budete potřebovat balíček make (k dispozici ve smartu). O další potřebné prostředky si případně řekne program sám. Pokud proběhne vše ok, napište make. Po přeložení se přihlaste jako root a napište make install. Po úspěšné instalaci budete mít kpum k dispozici přes nabídku menu KDE (stejně tak si jej můžete samozřejmě spustit i z konzoly).

Přidávání uživatelů pomocí kpumu je velmi jednoduché a intuitivní. Vypíšete si login, celé jméno uživatele, jeho heslo a nastavíte domovský adresář. Tam se uživatel objeví vždy po přihlášení. Možnost chroot určuje, zda bude mít uživatel přístup pouze do svého adresáře (a případných vložených podsložek) nebo zda bude mít možnost volně se pohybovat po celé adresářové struktuře. Záložky UID a GID určují jaká budou tato čísla pro přihlášeného uživatele. Pokud vás zajímá bezpečnost, doporučuji zřídit si nějakého uživatele např. ftpuser a skupinu ftpusers a omezit jim přístupová práva. Po nastavení uživatelů nezapomeňte vše uložit.

PŘÍSTUP K DATŮM

Standardně jsou data určená ke sdílení na ftp serveru nastavena v adresáři /srv/ftp. Tam můžete nakopírovat to, co si přejete nabídnout připojeným uživatelům. V případě, že máte uživatele, který je zamčený ve svém domovském adresáři, řekněme v /srv/ftp/uzivatel, a vy mu chcete zpřístupnit složku /data/audio nastává problém, neboť uživatel nemá jak k dané složce přistoupit. Řešením je připojit mu danou složku do jeho adresáře. Toto provedete tak, že vytvoříte prázdnou složku audio a napíšete

mount --bind /data/audio  /srv/ftp/uzivatel/audio

Tím se vám připojí daný adresář do nového a uživatel jej může využívat.

ABY VŠE SPRÁVNĚ FUNGOVALO

Pro korektní funkci ftp serveru je nutno nastavit firewall, konkrétně povolit porty 20 a 21 pro TCP (jak povolit porty na firewallu můžete najít například zde). Používáte-li pasivní ftp nebo NAT, je nutno nastavit v sysconfig (YAST-Systém-Editor souborů /etc/sysconfig) v záložce Network-Firewall-SuSEfirewall2 direktivu

FW_LOAD_MODULES = "ip_conntrack_ftp ip_nat_ftp".

Pokud tak neučiníte, budete se moci k serveru přihlásit, ale nebudete schopni získat výpis adresářů (dir).

Chcete-li, aby se vám váš ftp server spouštěl automaticky po startu systému, je vhodné umístit do souboru /etc/init.d/boot.local příkaz rcpure-ftpd start. Spouštění serveru lze zajistit i pomocí YASTu (YAST-Síťové služby-Síťové služby(xinetd)), avšak já osobně preferuji první variantu. Do /etc/init.d/boot.local můžete pak také přidat odkaz na soubor, který bude vždy po startu provádět výše zmíněné mountování různých adresářů. /etc/init.d/boot.local pak obsahuje

rcpure-ftpd start
/etc/pure-ftpd/mounter

a soubor /etc/pure-ftpd/mounter v sobě má například
# users
mount --bind /data/video/     /srv/ftp/user/video/
mount --bind /data/audio/     /srv/ftp/user/audio/
mount --bind /data/textfiles  /srv/ftp/user/textfiles/

PÁR ODKAZǓ NA ZÁVĚR

Pokud jste zde nenašli to co hledáte, můžete zkusit ještě pohledat v některém z následujících odkazů:

http://en.opensuse.org/FTP_Server_HOWTO
http://slacksite.com/other/ftp.html
http://www.pureftpd.org/project/pure-ftpd/doc
http://www.debianhelp.co.uk/pureftp.htm