Instalace a konfigurace FTP serveru

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

Autor: Neznámý

Komentáře

barbar odpověděl -

U anonymního uživatele je možné maximálně nastavit, aby mohl vytvářet adresáře.

Kamil Sasýn odpověděl -

Díky moc za ucelený článek o instalaci a konfiguraci FTP serveru, velmi mě pomohl.

Donedávna jsem používal vsftp, ale bohužel v něm je nastavení virtuálních uživatelů krkolomné. Pure ftp, ve spojení s Kpum, je skvělá volba (pro domácího uživatele asi nejlepší). Škoda, že Kpum není dále vyvíjen, ale i tak jeho funkčnost je dostačující. A ještě větší škoda, že tento program http://jeanmatthieu.free.fr/pureftpd/ není dostupný i pro linux :-(

Jen dodám pár poznámek:
1) Při kompilaci Kpum jsem musel doinstalovat mimo jiné tyto balíčky:
- xorg-x11-devel
- qt3-devel
- kdebase3-devel
Ale program si o ně řekne víceméně sám (případně pomůže google).

2) Spuštění Kpumu je nutné provést jako root (aby měl program příslušná práva):
V konzoli zadat příkaz: "su", pak heslo roota, a napsat "kpum".

3) Bohužel mi zde popisovaný způsob mountování nefungoval, nevím proč.
Využil jsem proto soubor /etc/fstab
a doplnil do něj požadované údaje ve tvaru:

# mount folder to ftp users
/newdir /olddir none rbind 0 0

Kde: newdir - cesta ke složce ftp uživatele, kam chceme "připojit" danou složku na našem disku, olddir - cesta ke složce na disku, kterou chceme dát k dispozici, bind/rbind - první volbou zpřístupníme dotyčnému pouze danou složku, druhou volbou zpřístupníme danou složku i všechny podložky (rekurzivně)

4) Při vytváření uživatele se musí zadat i UID a GID (Jinak se mě totiž nezdařilo ověření hesla na ftp účtu (chyba 530) při přihlášení přes ftp klienta na vytvořený ftp účet.)

Máme různé možnosti, jak UID (uživatel) a GID (skupina) nastavit:

a) pokud klademe důraz na bezpečnost, tak nejlépe u obou hodnoty ftp (viz. článek výše)... má to nevýhodu: veškeré soubory, které na našem disku vytvoří uživatel "ftp", budou nám (běžnému uživateli systému) nepřístupné - musíme jako root změnit jejich práva. (Možná se to dá řešit tím, že sebe přidáme do skupiny ftp - ale nevím, nepodařilo se mi to ověřit.

b) druhá možnost je, že UID nastavíme na "uživatel" (tedy, vybereme naše jméno, kterým se běžně přihlašujeme do systému) a u GUID nastavíme skupinu users. Tím dosáhneme toho, že veškeré soubory, které k nám kdokoliv přes ftp server nahraje budou automaticky patřit nám. Nevýhoda je však ta, že daný "ftp" uživatel s našimi právy, bude moc v připojených adresářích dělat cokoliv (nejen tedy uploadovat, ale i mazat, měnit atd.). Je tedy více než nutné nastavit u tohoto uživatele v Kpum položku Chroot user: Yes (zajístí, že se daný uživatel smí pohybovat jen ve svém domovském adresáři + samozřejmě tam, kam mu "namountujeme" složky).

5) FTP Monitor - applet do panelu (KDE):
http://www.kde-apps.org/content/show.php?content=11918
http://queens.db.toronto.edu/~nilesh/linux/ftpmonitor/?w=help

Překlad (suse):
---------------------
./configure --prefix=/opt/kde3
make
make install (...jako root, tedy v konzoli příkaz su)

Konfigurace:
------------------
V nastavení FTP Monitoru (který si spustíme - pravým myšítkem na panel, přidat applet do panelu....):
Use sudo - nezaškrtnuté
Cesta k pure-ftpd:
/usr/sbin/pure-ftpwho

Ještě je potřeba jako root (su) změnit práva:
chmod +s /usr/sbin/pure-ftpwho
...aby s tímto souborem mohl FTP monitor pracovat.

Kamil Sasýn odpověděl -

Bohužel, rpm balíček jsem nikde nenašel, měl jsem s kompilací taky problém, ale po pečlivém čtení výpisu během kompilace, se mi vše potřebné podařilo doinstalovat přes Yast. Zkus taky zadat hlášky do google, mě to pomohlo. Případně pak sem na diskuzi, snad ti někdo poradí.

Kamil Sasýn odpověděl -

Mountování (tak jak popisuje Usir v tomto článku) při startu funguje bezchybně, zapomněl jsem totiž nastavit soubor
/etc/pure-ftpd/mounter jako spustitelný.

Pokud využijeme postupu při vytváření uživatele: 4 a) má to kromě bezpečnosti ještě další výhodu: Omezení uploadu a downloadu provedeme jednoduše (klikáním) v nastavení přístupových práv dané složky (pravým na složku - vlastnosti - oprávnění).