Na začiatku internetu boli 2 typy služieb: Telnet a FTP. FTP vznikol v 1971, ešte pred TCP/IP (bežal pod
NCP = Network Control Program pre ARPANET).
1972: Špecifikácia bola upravená do podoby ktorá sa začínala podobať tej dnešnej.
1980: navrhnutý pre TCP/IP. Vtedy vznikol aj TFTP, odľahčená verzia FTP pre vtedajšie nároky na
výpočetnú silu.
1985: táto verzia protokolu slúži ako základ v dnešných implementáciách.
Ftp používa 2 tcp spojenia:
Klient sa pripojí na server.
Aktívny režim:
Klient otvorí port, pošle serveru číslo portu a server sa pripojí na klienta.
Príklad komunikácie:
=== hlavné spojenie === > nc ftp.fi.muni.cz 21 220 ProFTPD 1.3.1 Server (Faculty of Informatics) [::ffff:147.251.48.205] > USER anonymous 331 Anonymous login ok, send your complete email address as your password > PASS ??? 230-Hello, UNKNOWN at dionysos.fi.muni.cz! > PWD 257 "/" is the current directory PORT 147,251,48,39,4,0 # 4*256 + 0 = 1024 200 PORT command successful LIST -l 150 Opening ASCII mode data connection for file list 226 Transfer completePasívny režim:=== netcat === nc -vv -l -p 1024 connect to [147.251.48.39] from odysseus.fi.muni.cz [147.251.48.205] 20 drwxr-xr-x 3 ftpadm ftpadm 56 Feb 12 2007 etc drwxr-xr-x 4 ftpadm ftpadm 4096 May 30 2007 http drwxr-xr-x 3 ftpadm ftpadm 0 Apr 13 13:36 mount drwxr-xr-x 23 ftpadm ftpadm 20480 Apr 13 05:08 pub sent 19, rcvd 243CWD pub 250 CWD command successful PORT 147,251,48,39,4,0 200 PORT command successful RETR README.uploads 150 Opening BINARY mode data connection for README.uploads (747 bytes) 226 Transfer complete=== netcat (2) === nc -vv -l -p 1024 ...obsah README.uploads...
=== hlavné spojenie === ... PASV 227 Entering Passive Mode (147,251,48,205,164,98). LIST=== netcat (PASV) === nc -vv 147.251.48.205 42082 # 164*256+98 = 42082 odysseus.linux.cz [147.251.48.205] 42082 (?) open drwxr-xr-x 3 ftpadm ftpadm 56 Feb 12 2007 etc drwxr-xr-x 4 ftpadm ftpadm 4096 May 30 2007 http drwxr-xr-x 3 ftpadm ftpadm 0 Apr 13 13:49 mount drwxr-xr-x 23 ftpadm ftpadm 20480 Apr 13 05:08 pub sent 0, rcvd 243Extended passive mode: čísla portov sú normálne.
RNFR - premenovať z RNTO - premenovať na APPE - append REST - pokračovať v prerušenom downloade (nepríjemne pri ASCII móde) TYPE - binary/text/... USER - meno užívateľa PASS - heslo.Autentizácia na úrovni FTP: cez USER a PASS. Existuje anonymný pristup: USER anonymous, PASS .... pri tomto prístupe servre chcú mailovú adresu ale väčšinou tam môžme napísať čo chceme. Anonymným užívateľom obecne nechceme dávať možnosť uploadovať dáta.
ServerName "Moj FTP server" ServerIdent on "FTP Server pripraveny." ServerType inetd DefaultServer on Port 21 Umask 022 MaxInstances 30 User nobody Group nobody HideUser root <Limit LOGIN> Order allow,deny Allow from 192.168.0.,.acme.com Deny from all </Limit> <Limit READ DIRS> IgnoreHidden on </Limit> <Directory /*> AllowOverwrite on </Directory> <Directory /etc> AllowOverwrite off </Directory> <Anonymous /home/ftp> User anonymous Group ftpanon AnonRequirePassword off MaxClients 10 # Limit WRITE everywhere in the anonymous chroot <Limit WRITE> DenyAll </Limit> </Anonymous>Zaujímavé konfiguračné direktívy:
User, Group | uid/gid pod ktorým bude proces bežať |
UseFtpUsers | (z wu-ftpd) v /etc/ftpusers sú uživatelia ktorí nemajú povolený prístup |
RequireValidShell yes | nechceme démonom povoliť ftp |
Anonymous | anonymný login, s User povieme kedy bude považovat login za anonymný. štandardne sa použije User anonymous |
<VirtualHost adresy> | IP/DNS adresy virtualných ftp serverov. Užívateľovi sa môže zdať že pod inými ip adresami (na rovnakom stroji) bežia iné ftp servre. |
DefaultAddress | ktorý VirtualHost bude defaultný. Defaultne je to to čo povie na začiatku systém. |
<IfModule mod_auth_pam.c> AuthPAM off </IfModule> | vypni PAM |
DefaultRoot ~ | defaultne sa chrootni do uzivateľovho domovského adresára |
AuthOrder mod_auth_file.c | ako autentizačný modul použi iba mod_auth_file. Keby sme prihodili ďaľšie za mod_auth_file, mali by menšiu prioritu |
AuthUserFile /etc/ftpd/passwd name ^ftp home !^/home | pre mod_auth_file.c |
MaxClients | maximálny počet uživateľov |
ServerLog | kam máme logovať |
uid = nobody gid = nobody use chroot = yes max connections = 4 syslog facility = local5 pid file = /var/run/rsyncd.pid secrets file = /etc/rsyncd.secrets [pub] # verejný adresár read only = yes list = yes path = /var/./pub # chrootneme do /var [data] list = yes auth users = nbusr path = /var/./data comment = neake data/etc/rsyncd.secrets :
nbusr:nbusr123V obidvoch prípadoch sa chrootneme do /var. Môžeme tam mať knižnice, ktoré nám umožnia preložit username do na UID. Je to preto, že v chrootovanom prostredí proces nemá prístup do /etc/passwd.
rsync -avz -e ssh rsync@remote.acme.com:/home/rsync/out/ /home/rsync/from_remote