FTP neboli File Transfer Protocol je definován v RFC959. Jedná se o protokol aplikační vrstvy, který je určen pro přenos souborů. Je nezávislý na platformě a hardwaru. Pracuje na principu klient-server a běží na portech 20 a 21. Kde port 20 se využívá pro přenos dat a port 21 ke posílaní FTP příkazů. Server naslouchá na portu 21 na spojení od klienta. V závislosti na typu spojeni, klient (aktivní typ) nebo server (pasivní typ) očekává datové spojení.
Jedná se o stavový protokol. Klient naváže řídící spojení (port 21) a to je udržováno po celou dobu trvání relace. Server si o klientovy pamatuje různé informace - režim přenosu či v jakém adresáři se klient nachází. Pro datová přenosy se vždy jednorázově vytvoří datové spojení (proto je posílání více souborů pomalejší - pokaždé se musí ustanovit spojení), které je po ukončení přenosu okamžitě uzavřeno.
Aktivní
- datové spojení je navazováno serverem, klient naslouchá.
Pasivní - datové spojeni otevírá klient na adresu a port serveru, ten naslouchá
WU-FTPD
Dříve hodně používaný, dnes nahrazen servery se snazší konfiguraci a bohatšími funkcemi. Vznikl na Washingtonské univerzitě. Aktuální verze
WU-FTPD je 2.6.2.
TrollFTPD
Vývoj zastaven u verze
troll-ftpd-1.28. Jedná se o velmi malý server. Nespouští žádné externí programy, snadná konfigurace anonymního FTP, podpora virtuálních FTP serverů.
VSFTPD
Velmi malý, rychlý a bezpečný FTP server. Poslední verze je
VSFTPD 2.0.5. Snadno konfigurovatelný a poskytuje mnoho funkcí včetně virtuálních uživatelů či SSL podporu.
proFTPD
Je považován za stabilní a bezpečný. Je velmi konfigurovatelný a jeho konfigurace se podobá konfiguraci HTTP serveru Apache. Aktuální verze
proftpd-1.3.0.
Je dobře dokumentován a většina konfigurací se velmi podobá vzorovým konfiguracím. Možnost běhu jako samostatný proces nebo být spouštěn z ined démona. Jednoduché nakonfigurování anonymního FTP. Podpora virtuálních FTP serverů. Je velmi modulární, podpora SSL, LDAP či SQL.
Konfiguraci obvykle nalezneme v /etc/proftpd.conf. Jednoduchá konfigurace standalone serveru může vypadat následovně.
#Řetězec, který se vypíše uživateli připojujícímu se k serveru ServerName "ProFTPD Default Installation" #Způsob jakým bude server spuštěn (inetd nebo standalone). ServerType standalone DefaultServer on #TCP port na kterém bude server naslouchat, pokud běží jako standalone Port 21 #Maska přístupových práv, zadaná oktalově. Mohou být zadány dvě masky, # jedna pro soubory a druhá pro adresáře. Umask 022 #Maximální počet potomků spuštěných rodičovským procesem v standalone #režimu. Každý proces reprezentuje jedno ftp spojení, tato direktiva #tedy zároveň určuje maximální počet spojení. #Vhodné použití může být dobrou prevencí proti DoS útoku (denial-of-service attack). #Protože se pro každé spojení spouští nový proces, může opakovaný spojení #na ftp port způsobit zahlcení systému. MaxInstances 30 #Uživatel pod kterým proftpd poběží. Pokud se přihlásí běžný uživatel, # proces se spustí s jeho uid/gid. User nobody Group nogroup #Blok konfigurace vztažený pouze k danému adresáři. <Directory /*> #Povolí přepisování souborů AllowOverwrite on </Directory> #Konfigurace anonymního ftp serveru. #Parametrem je adresář, do kterého se provede chdir a posléze i chroot. <Anonymous ~ftp> #Uživatel a skupina, pod kterým poběží anonymní ftp. User ftp Group ftp #Povol login i bez platného shellu pro uživatele ftp. RequireValidShel off #Anonymní uživatelé se mohou přihlásit buď jako ftp nebo anonymous. UserAlias anonymous ftp #Maximální počet anonymních spojení. MaxClients 10 #Jméno souboru, jehož obsah se uživateli vypíše po přihlášení. #Pokud je zadáno relativně, soubor se hledá v adresáři, kam je uživatel #přepnut po přihlášení. #Je možno jej zadat i absolutně. DisplayLogin welcome.msg #Jméno souboru, jehož obsah se vypíše po přepnutí do adresáře. DisplayFirstChdir .message #Omezení FTP příkazů (CWD, MKD, RNFR, DELE, RMD, RETR, STOR, LOGGIN) #a příkazových skupin (READ, WRITE, DIRS, ALL). <Limit WRITE> #Možno použít Deny, Allow, DenyAll, AllowAll, AllowGroup ... DenyAll </Limit> </Anonymous>
Autentizace uživatele probíhá podle jména a hesla. ProFtpd poskytuje možnost použít jak klasické /etc/passwd, tak /etc/shadow, či vlastní soubor s hesly. Po přihlášení je uživatel přepnut do svého domovského adresáře. Anonymní ftp přístup umožňuje přihlásit se jako anonymní uživatel (obvykle ftp či anonymous), místo hesla je uživatel požádán o zadání své email adresy. Ftp server potom provede volání jádra chdir do určeného adresáře a zde provede chroot. Tímto se zajistí, že anonymní uživatel nemůže mimo přesně vymezený podstrom.
Pomocí tzv. Virtual hosting můžeme nakonfigurovat několik různých FTP serverů. Jelikož FTP protokol neposkytuje hlavičku host, jak je tomu v HTTP, musí jednotlivé FTP servery běžet na různých portech.
Minimální konfigurace virtuálního FTP může vypadat takto:
<VirtualHost 10.0.0.1> ServerName "My virtual FTP server" </VirtualHost>
ProFTPD poskytuje několik možností logovacích mechanismů.
syslog - v základním nastavení ProFTPD loguje pomoci syslogu. Kam a jak se loguje je nastaveno v konfiguračním souboru syslogu /etc/syslog.conf
logovací soubory
- jsou 3 základní druhy logů, které může ProFTPD generovat: TransferLog, SystemLog a ExtendedLog.
Program
rsync
slouží k synchronizaci souborů či adresářů s použitím co možná největší úspory přenesených dat. Aktuálně je ve verzi 2.6.9 a je standardní součástí skoro každé distribuce. Jedná se o architekturu klient - server. Kde jeden či více démonu běží na serveru a klienti si se serverem synchronizují data. K úspoře přenesených dat dochází tím, že se kopírují pouze rozdíly v souborech. Pro přenos souborů se používá ssh či rsh.
Mezi hlavní vlastnosti patří: synchronizace adresářových struktur, zachovávání symbolických linku, práv či vlastníka a podpora anonymního rsync (není potřeba jméno a heslo).
Hlavní způsoby použití:
Používá se stejný binární soubor pro spouštění démona (serveru) i pro spouštění klienta. Soubor s konfigurací je obvykle /etc/rsyncd.conf. Obsahuje parametry moduly. Parametr se zapisuje tvarem 'jmeno = hodnota' a modul začíná svým jménem např. [ftp] a končí tak, kde začíná modul nový. Na začátku souboru se dají definovat parametry, které budou platit globálně.
Příklad rsyncd.conf:
#uživatel a skupina pod kterou běží uid = nobody gid = nobody #nechroot()uje se use chroot = no #maximální počet otevřených spojení max connections = 4 #způsob logování syslog facility = local5 #kam s pid souborem pid file = /etc/rsyncd.pid #moduly [ftp] path = /var/ftp/pub comment = whole ftp area (approx 6.1 GB) [sambaftp] path = /var/ftp/pub/samba comment = Samba ftp area (approx 300 MB) [rsyncftp] path = /var/ftp/pub/rsync comment = rsync ftp area (approx 6 MB) [sambawww] path = /public_html/samba comment = Samba WWW pages (approx 240 MB) [cvs] path = /data/cvs comment = CVS repository (requires authentication) auth users = tridge, susan secrets file = /etc/rsyncd.secrets kde soubor /etc/rsyncd.secrets vypadá následovně: tridge:mypass susan:herpass
Přístupová práva k souboru s hesly musí byt nastavena tak, aby byl zakázán přístup pro ostatní, jinak nebude fungovat, např chmod 640 /etc/rsyncd.secrets
Pomocí rsync klienta se provádí připojení a přenos souborů. Může se jednat jak o download, tak o upload, záleží na nastavení serveru. Spouštění přes příkazovou řádku má následující syntaxi:
rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST rsync [OPTION]... [USER@]HOST:SRC [DEST] rsync [OPTION]... SRC [SRC]... DEST rsync [OPTION]... [USER@]HOST::SRC [DEST] rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
Podrobný popis voleb je popsán v man stránkách, viz. man rsync
Příklad použití:
rsync \ rsync://ftp.linux.cz/pub/linux/redhat-cz/7.1/iso/redhat-7.1cz-disk1-respin.iso \ ./redhat-7.1cz-disk1.iso
http://www.fi.muni.cz/kas/p090
http://www.wikipedia.org
http://www.abclinuxu.cz
http://www.root.cz