FTP, Rsync

Vladim�r Lap��ek, < xlapacek@fi.muni.cz>


Obsah


�vod

FTP (File Transmission Protocol) je protokol typu klient/server ur�en� pro p�enos soubor� mezi vzd�len�m serverem a lok�ln� stanic�. Je velmi jednoduch� a proto tak� velmi pou��van�. Tento protokol je definovan� v RFC 959. M� p�id�leny 2 well-known porty: 20 (datov�) a 21 (��d�c�). Nasleduj�c� sch�ma zn�zor�uje zp�sob komunikace mezi serverem a klientem:

                                            -------------
                                            |/---------\|
                                            ||   User  ||    --------
                                            ||Interface|<--->| User |
                                            |\----^----/|    --------
                  ----------                |     |     |
                  |/------\|  FTP Commands  |/----V----\|
                  ||Server|<---------------->|   User  ||
                  ||  PI  ||   FTP Replies  ||    PI   ||
                  |\--^---/|                |\----^----/|
                  |   |    |                |     |     |
      --------    |/--V---\|      Data      |/----V----\|    --------
      | File |<--->|Server|<---------------->|  User   |<--->| File |
      |System|    || DTP  ||   Connection   ||   DTP   ||    |System|
      --------    |\------/|                |\---------/|    --------
                  ----------                -------------
PI zde znamen� protocol interpreter a DTPdata transfer process.

Server poslouch� na ��d�c�m portu (obvykle 21), kde �ek� na p��choz� spojen� od klienta (z n�jak�ho vy���ho portu). Pro komunikaci klienta se serverem se pou��vaj� kr�tk� p��kazy maxim�ln� �ty�p�smenn� v�t�inou dopln�n� parametrem. Server na n� odpov�d� trojcifern�m ��slem ur�uj�c�m k�d odpov�di dopln�n�m dal��m popisem. P�ihl�en� klienta zaji��uj� p��kazy USER a PASS, kter�mi se klient identifikuje v��i serveru. Pou�it� p�ihla�ovac� jm�no ur�uje, ke kter�m soubor�m z�sk� klient pr�va. Zvl�tn� postaven� m� p�ihla�ovac� jm�no anonymous, pro kter� FTP d�mon pracuje obvykle v chrootovan�m prost�ed� a m�sto hesla po�aduje emailovou adresu.Pro p�enos dat se na serveru otev�e datov� port (��d�c�-1), stejn� tak na klientsk�m po��ta�i. Samotn� p�enost dat je realizov�n TCP spojen�m nad datov�mi porty p��jemce a odes�latele. Po zkon�en� p�enosu jsou datov� porty uzav�eny.
Dal�� d�le�it� p��kazy jsou:

Funk�nost b��c�ho FTP serveru lze snadno ov��it np��klad telnetem na port 21. Server by m�l vypsat �vodn� pozdrav a �ekat na dal�� p��kazy. Nalogujeme se p��kazy USER login, PASS password a server by m�l odpov�d�t kladn�m k�dem a ohl�sit User login logged in. Nyn� m��eme pou��t nap��klad p��kaz stat, kter� n�m vyp��e info o p�ipojen� a nastaven� p�enosu. Spojen� se ukon�uje p��kazem QUIT.

FTP Klienti

Pro komunikaci se serverem pot�ebujeme klientsk� program. Z t�ch nejpou��van�j��ch:

FTP Servery

Naopak pro z��zen� FTP serveru pot�ebujeme n�jak�ho FTP d�mona.

ProFTPD

Z�kladn� vlastnosti:

Instalace

Instalace prob�h� obvykl�m
./configure
make
make install
Z�kladn� instalace v�ak zahrnuje jen zlomek mo�nost�, kter� ProFTPD obshauje. Pokud pot�ebujeme n�kter� z voliteln�ch modul� pou�ijeme
./configure --with-modules=mod_name1:mod_name2

Konfigurace

ProFTPD �te sv� nastaven� standartn� z /etc/proftpd.conf. Tento soubor je velmi podobn� konfigura�n�mu souboru www serveru Apache. D�l� do n�kolika sekc�.

Sekce <Global> slou�� k nastaven� "defaultn�ch hodnot". Toto nastaven� lze pozd�ji zm�nit v jednotliv�ch sekc�ch.

V sekci <Anonymous> se definuje z�kladn� konfigurace anonymn�ho FTP serveru. Implicitn� server pracuje v chrootovan�m prost�ed�. Jako login pou�ijeme "anonymous", jako heslo emailovou adresu.

V sekci <Directory> se definuj� p��stupov� pr�va pro uveden� adres��.

Sekce <Limit> se pou��v� pro stanoven� omezen�, kdo a jak� p��kazy se mohou pou��vat.

Sekce <VirtualHost> slou�� k vytvo�en� a knfiguraci virtu�ln�ho FTP serveru.

P��klad konfigura�n�ho souboru:
 ServerName             "My ProFTPD server"

 ServerType             standalone

 Port                   21

 #standartni umaska, tak aby nove adresare nebyly zapisovatelne pro group a others
 Umask                  022

 TimeoutLogin           120
 TimeoutIdle            600
 TimeoutNoTransfer      900
 TimeoutStalled         3600

 #maximalni pocet potomku (funguje jen ve stadnalone modu) 
 MaxInstances       	30

 User                	nobody
 Group                  nogroup
 
 #koren ftp stromu
 DefaultRoot            korenovy_adresar/

 ScoreboardPath		/var/run/proftpd
 
 TransferLog            /var/spool/syslog/proftpd/xferlog.legacy

 LogFormat         	default "%h %l %u %t \"%r\" %s %b"
 LogFormat              auth    "%v [%P] %h %t \"%r\" %s"
 LogFormat              write   "%h %l %u %t \"%r\" %s %b"

 #ve sech adresarich je mozne prepisovat soubory
 <Directory /*>
   	AllowOverwrite       on
 </Directory>

 #neni-li receno jinak, je vsude zakazano zapisovani
 <Limit WRITE>
        dENYall
 </Limit>

 <Global>
        DisplayLogin            welcome.msg
        DisplayFirstChdir       readme
        
        ExtendedLog             /var/spool/syslog/proftpd/access.log WRITE,READ write,read
        
        ExtendedLog             /var/spool/syslog/proftpd/auth.log AUTH auth
        
        #ExtendedLog    	/var/spool/syslog/proftpd/paranoid.log ALL default
 </Global>

 #zakladni konfigurace anonymniho FTP serveru as jednim upload adresarem
 <Anonymous korenovy_adresar/pub>
  	<Limit LOGIN>
    		AllowAll
  	</Limit>

  	MaxClients	5 "Sorry, max %m users -- try again later"

	User     	ftp
  	Group          	ftp
  
  	UserAlias  	anonymous ftp

  	<Directory uploads/*>
    		<Limit READ>
      			DenyAll
    		</Limit>
    		<Limit STOR>
      			AllowAll
    		</Limit>
  	</Directory>
 
 </Anonymous>
 
#a priklad jednoho virtualniho FTP serveru
 <VirtualHost ftp.virtual.cz>
        ServerAdmin             ftp_admin@virtual.cz
        ServerName              "Jinde FTP server"
        MaxLoginAttempts        2
        RequireValidShell       no
        TransferLog             /var/spool/syslog/proftpd/xferlog.www
        MaxClients              50
        DefaultServer           on
        DefaultRoot             jiny_koren/

        TimeoutLogin                    240
        TimeoutIdle                     900
        TimeoutNoTransfer               1200
 	
     	<Limit ALL>
         	Order Allow,Deny
         	Allow .evil.net, .evil2.net
         	Allow .dangerous.net
         	Deny ALL
      	</Limit>

       	#private adresar jen pro hodne kamarady :-)
        <Directory jiny_koren/private>
                <Limit ALL>
                        AllowUser kamarad1
                        AllowUser kamarad2
                        DenyAll
                </Limit>
        </Directory>
</VirtualHost>

Rsync

Tento program slou�� pro efektivn� p�enos soubor� mezi dv�ma po��ta�i na s�ti. Chov� se podobn� jako rcp, ale poskytuje mnohem v�ce mo�nost� a pro urychlen� p�enosu pou��v� remote-update protokol. Pomoc� tohoto protokolu rsync nep�en�� cel� soubory, ale pouze odli�nosti v nich. Pro hled�n� t�chto rozd�l� je pou�ito checksum-search algoritmu. Rsync um� p�en�et nejen oby�ejn� soubory, ale tak� odkazy, soubory z adres��e /dev a z�rove� zachov�v� jejich pr�va, vlastn�ka a skupinu. Pro p�enos soubor� m��eme pou��t na vzd�len�m po��ta�i rsync d�mona nebo remoteshell - ssh. Druh� varianta n�m zajist� �ifrovan� spojen�. Pokud c�lov� cesta obsahuje jen jeden odd�lova� : pou�ije se ssh, pokud dva, pou�ije se pro p��jem dat rsync.

P��kazem rsync lze spustit jak d�mona (volba --daemon), tak klientsk� program. Op�t m��eme zvolit mezi spu�t�n�m ze super-serveru inetd nebo jako stand-alone d�monem. V prvn�m p��pad� je nutno p�idat do souboru /etc/services p�idat z�znam

rsync	873/tcp

K b��c�mu rsync serveru se lze p�ipojit pomoc� p��kazu rsync (tentokr�t bez volby --daemon). Obecn� p��kaz pro kop�rov�n� soubor� ze vzd�len�ho po��ta�e m��e vypadat n�sledov�

rsync [OPTIONS] [USER@]HOST::SRC [DEST]
Pro kop�rov�n� soubor� se zachov�n�m link�, pr�v a vlastn�k� lze pou��t p��kaz:
rsync -avz foo:src/bar/ /tmp
Volba -v (--verbose) n�m vyp��e v�ce informac�, -z (--compress) zajist�, �e bude pou�ita komprese a -a (--archive) dovol� zachovat p��stupov� pr�va atd.

Konfigurace

Konfigura�n� soubor je standartn� v /etc/rsyncd.conf a je podobn� konfigura�n�mu souboru samby.
P��klad konfigurace
motd file = /etc/motd
max connections = 25
syslog facility = local3

[ftp]
        comment = ftp area
        path = /home/ftp
        read only = yes
        list = yes
        uid = nobody
        gid = nobody
[tmp]
        comment = temporary file area
        path = /tmp
        read only = no
        list = yes
        hosts allow = 10.0.0.0/8 127.0.0.0/8 *.fi.muni.cz
        auth users = tridge, susan
        secrets file = /etc/rsyncd.secrets           

V�ce viz rsync.samba.org