[[oktatas:linux:ftp_szerver|< FTP szerver]] ====== FTP elmélet ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2011, 2012, 2013, 2015 * Licenc: GNU Free Documentation License 1.3 * Web: http://szit.hu ===== Bevezetés ===== Az FTP a File Transfer Protocol rövidítése. Fájlok átvitelére, Abhay Bhushan által megalkotott protokoll. A következő szabványok írják le: * RFC 114 (1971) * RFC 765 (1980) * RFC 959 (1985) A fájlok átvitele volt az első alkalmazás amire használták az korai ARPANET-et. Kliens szerver alapú megoldás, egy fájl le- vagy feltöltése egy valahol a világhálón elhelyezett szerverről történik. Meg kell jegyezzük, mai napság elterjedtek e mellett a peer-to-peer hálózatok, ahol a letöltés több helyről is történik egyszerre, így gyorsabb, hatékonyabb átvitelt érve el ezzel. {{:oktatas:linux:ftp_szerver:ftp_rfc-ek.png|}} ===== Kettős csatorna ===== Abhay úgy gondolta, ha két kapcsolatot építünk ki, az egyiket vezérlésre használjuk, a másikat a konkrét adatok (fájlok) átvitelére, akkor hatékonyabb lesz a protokoll. Ezért az FTP mai napig két csatornával dolgozik. {{:oktatas:linux:ftp_szerver:ftp_csatornai.png?600|}} ===== Két mód ===== A kettős csatornahasználatnak két fajtája van: * aktív * passzív Az "aktív" és a "passzív" kapcsolatnál is a szerver a 21-es porton várja a klienseket. Mindkét esetben a 21-es portra kiépül egy vezérlőkapcsolat. Az "aktív" kapcsolat esetén a szerver a 20-as porton is kiépít egy kapcsolatot a kliens által megadott másik portra. ^ Kliens | ^ Szerver ^ ^ 1024 port | -> ^ 21 port ^ ^ 1025 port | <- ^ 20 port ^ A kliens oldalon persze nem biztos, hogy az 1024-es és 1025-ös port nyílik meg. 1023 felett, amelyik szabad. ^ Kliens | ^ Szerver ^ ^ 1024 port | -> ^ 21 port ^ ^ 1025 port | -> ^ 1024 port ^ {{:oktatas:linux:ftp_szerver:ftp_aktiv_kapcsolat.png?600|}} {{:oktatas:linux:ftp_szerver:ftp_passziv_kapcsolat.png?600|}} ===== Azonosítás ===== ==== Az azonosítás lehetséges módjai ==== {{:oktatas:linux:ftp_szerver:ftp_azonositas.png?400|}} {{:oktatas:linux:ftp_szerver:ftp_virtualis_felhasznalok.png?300|}} ==== Linuxos felhasználók ==== Az FTP szerverek telepítés után általában lehetővé teszik, hogy a Linuxon felvett felhasználók használhassák azt. ==== Virtuális felhasználók ==== Előfordulhat azonban, hogy olyan felhasználónak szeretnénk FTP hozzáférést adni, aki a linuxos rendszerben nem létezik és nem is akarjuk ott létrehozni. Ekkor egy külön adatbázist hozunk létre a felhasználók számára, ők a rendszerben csak virtuálisan lesznek jelen. Úgy szokás nevezni őket, hogy virtuális felhasználók. ==== Anonymous felhasználók ==== A harmadik lehetőség, hogy olyan felhasználók számára adunk hozzáférési lehetőséget aki sem a Linuxon, sem a virtuális adatbázisban nem létezik. Ők lesznek az anonymous, azaz névtelen felhasználók. Az anonymous felhasználók számára egyetlen könyvtárat szoktunk csak kiszolgálni. Ha egy ilyen FTP szervert szeretnék elérni, akkor felhasználónévnek az "anonymous" szót írom. A rendszer ebből tudja, hogy a névtelen felhasználók könyvtárát akarom elérni. Olyankor szoktuk használni, ha valamit nyilvánosan elérhetővé szeretnénk tenni. Vannak rendszergazdák, akik az anonymous felhasználók számára jelszóként egy e-mail címet kérnek be. Ilyenkor általában megkövetelik, hogy legyen szabályos e-mail cím. ===== Titkosítás ===== Régebben, amikor nyilvánvalóvá vált, hogy internetes kapcsolatainkat titkosítani kell a biztonság érdekében, azért ellenezték az FTP használatát mert a szerverek nem biztosították ezt. A szerverek programozói lassan építették be FTP szervereikbe ezt a lehetőséget. Persze kliens program sem nagyon akadt amely tudta használni a titkosítást. ==== SSL/TLS ==== A titkosított átvitelre volt két protokoll SSL/TLS, amely azt biztosítja, hogy egy meglévő protokollt titkosítsunk. Az SSL és/vagy a TLS lehetőségét építették be a programozók a szervereikbe. Ma már a népszerű FTP szerverek mindegyike képes a titkosított átvitelre. {{:oktatas:linux:ftp_szerver:ftp_ssl_felett.png?600|}} ===== FTP kommunikáció ===== ^ Az FTP kommunikáció parancsai a teljesség igénye nélkül ^^ | USER | felhasználónév | | PASS | jelszó | | LIST | a könyvtár listázása | | MKD | könyvtár létrehozása | | CWD | könyvtár csere | | PWD | aktuális könyvtár | | RETR | kliens letölt egy fájlt | | DELE | egy fájl törlése | | STOR | egy fájl feltöltése a szerverre | | RNFR | egy fájl átnevezése az RNTO-ban megadottra | | RNTO | egy RNFR-ben megadott fájlt átnevez az itt megadottra | ^ Válaszkódok ^^ | 1xx | a végrehajtás elkezdődött, eddig OK | | 2xx | Sikeres végrehajtás, OK | | 3xx | Végrehajtás közben, eddig rendben, de további parancsra vár \\ USER, PASS, RNFR vagy RNTO | | 4xx | Ideiglenes hiba. A kliens újra megpróbálhatja a végrehajtást. | | 5xx | Végzetes hiba. Nincs értelme a kérés megismétlésének. | ===== Függelék ===== {{:oktatas:linux:ftp_szerver:ftp_szerver.png?400|}} {{:oktatas:linux:ftp_szerver:anonymous_ftp_szerver.png?400|}} {{:oktatas:linux:ftp_szerver:ftp_szerver_virtualisfelhasznalok.png?400|}}