FTPD(8)

NÉV
ftpd - DARPA Internet File Transfer Protocol szerver

ÁTTEKINTÉS
ftpd [ -d ] [ -v ] [ -l ] [ -ttimeout ] [ -Tmaxtimeout ] [ -a ] [ -A ] [ -L ] [ -i ] [ -o ] [ -pctrlport ] [ -Pdataport ] [ -q ] [ -Q ] [ -rrootdir ] [ -s ] [ -S ] [ -uumask ] [ -w ] [ -W ] [ -X ]

LEÍRÁS
Az ftpd a DARPA Internet File Transfer Protocol szerver procesz. A szerver a TCP protokollt használja, és az ``ftp'' szervíz-specifikációban megadott porton várakozik, lásd services(5).

Ha a -d vagy -v opció meg van adva, debugging információ íródik a syslog-ba.

Ha az -l opció meg van adva, minden ftp session loggolva lesz a syslog-ba.

Ha a kliens 15 percig nem csinál semmit, az ftp szerver megszakítja a kapcsolatot. Ha a -t opció meg van adva, a várakozási idő timeout másodpercre állítódik. A kliens szintén kérhet különboző várakozási időt; a maximálisan megengedett időt timeout másodpercre állítja a -T opció. A default határ 2 óra.

Ha az -a opció meg van adva, az ftpaccess(5) konfigurációs fájl használata engedélyezve van.

Ha az -A opció meg van adva, az ftpaccess(5) konfigurációs fájl használata nincs engedélyezve. Ez a default.

Ha az -L opció meg van adva, akkor az ftpd(8) szervernek küldött parancsok a syslog-ba íródnak. Az -L opció használatát felülbírálja az ftpaccess(5) fájl használata. Ha a -L flag használva van, az összes USER parancs loggolva lesz, vagyis ha a felhasználó véletlenül a jelszavát írja be a felhasználói neve helyett, a jelszava a syslogon keresztül loggolódik.

Ha az -i opció meg van adva, az ftpd(8) szerver által fogadott fájlok az xferlog(5) -ba loggolódnak. Az -i opciót felülbírálja az ftpaccess(5) fájl használata.

Ha az -o opció meg van adva, az ftpd(8) szerver által elküldött fájlok az xferlog(5) -ba loggolódnak. Az -o opciót felülbírálja az ftpaccess(5) fájl használata.

Ha az -u opció meg van adva, a default umask umask lesz

Ha a -W opció meg van adva, a belépések nem kerülnek a wtmp fájlba. A default ( -w ) minden belépés és kilépés feljegyzése.

Az -s és -S opciók "standalone" üzemmódba teszik a démont. (ilyenkor közvetlenül figyeli a portot, és nem az inetd démon indítja - a ford.) Az -S opció a háttérbe teszi a démont, és a rendszerinicializálós szkriptekben lehet hasznos (például az rc.local -ban) Az -s opció az előtérben hagyja a démont, és az init-ból való futtatáskor (például az /etc/inittab segítségével) hasznos.

A -p és -P felülírják a démon által használt portszámokat. Normálisan a démon a portszámokat úgy állapítja meg, hogy az "ftp" és "ftp-data" bejegyzéseket megnézi az /etc/services fájlban. Ha nincs "ftp-data" bejegyzés az /etc/services fájlban, és a -P opció nincs megadva, akkor a démon a kontroll-kapcsolat portszámát megelőző portot használja. A -p opció csak a "standalone" démonként való futás esetén használható.

A -q és -Q opciók azt határozzák meg, hogy használjon-e PID fájlokat a démon. Ezeket a fájlokat a limit direktíva használja arra, hogy meghatározza az egy elérési osztályban levő egyszerre jelenlevő felhasználók számát. A PID fájlok letiltása a felhasználói limiteket is letíltja. A default ( -q ) a PID fájlok használatának az engedélyezése. A -Q opciót akkor add meg, ha normális felhasználóként teszteled a szervert, és a PID fájloktól nem léphetsz be. Olyan nagyforgalmú szájtok esetén, amelyek nem limitálják az egyszerre jelenlevő felhasználók számát, szintén meggondolhatod a PID fájlok letiltását.

A -r opció arra utasítja a démont, hogy a megadott könyvtárba chroot(2) -oljon, rögtön az elindulás után. Ez annyiban javíthatja a rendszer biztonságát, hogy korátozza azoknak a fájloknak a számát, amelyek károsíthatók egy a démonon keresztüli betörés esetén. Akárcsak az anonymous FTP esetén, szükség van néhány külön fájlra, a rendszertől függően.

Az ftp szerver jelenleg a következő ftp kéréseket támogatja (nem számít, hogy nagybetű vagy kisbetű):

Kérés	Leírás
ABOR	az előző parancs végrehajtását szakítsd meg
ACCT	account megadása (figyelmen kívűl hagyva)
ALLO	foglalj tárolási helyet
APPE	írd egy fájl végére (append)
CDUP	menj eggyel feljebb a könyvtárstruktúrában
CWD	változtass könyvtárat
DELE	törölj egy fájlt
HELP	adj segítő információt
LIST	listázd a fájlokat egy könyvtárban (``ls -lgA'')
MKD	csinálj egy könyvtárat
MDTM	mutasd meg egy fájl utolsó módósításának idejét
MODE	specifikálja az adatátvitel módját
NLST	add meg egy könyvtárban levő fájlok neveit
NOOP	ne csinálj semmit
PASS	ez a jelszavam
PASV	szerverről-szerverre átvitel előkészítése
PORT	ezen a porton menjenek az adatok
PWD	írd ki az aktuális könyvtárat
QUIT	kilépek
REST	kezdd újra a nem teljes átvitelt
RETR	kérek egy fájlt
RMD	törölj egy könyvtárat
RNFR	átnevezésnél a régi fájlnév
RNTO	átnevezésnél az új fájlnév
SITE	nem standard parancsok (lásd alább)
SIZE	mekkora ez a fájl
STAT	mi a szerver státusza
STOR	tárolj egy fájlt
STOU	tárolj egy fájlt egyedi névvel
STRU	az adatátvitel struktúrájának megadása
SYST	mutasd a szerver operációs rendszerének a típusát
TYPE	az adatátvitel típusának a meghatározása
USER	felhasználói név meghatározása
XCUP	válts a jelenlegi munkakönyvtár szülőjébe (elavult)
XCWD	könyvtárváltás (elavult)
XMKD	csinálj egy könyvtárat (elavult)
XPWD	írd ki az aktuális munkakönyvtárat (elavult)
XRMD	törölj egy könyvtárt (elavult)

A következő nem standard vagy UNIX-specifikus parancsokat támogatja a SITE kérés:

Kérés	Leírás
UMASK	umask váltás. Pl.: SITE UMASK 002
IDLE	idle-timer beállítása. Pl.: SITE IDLE 60
CHMOD	egy fájlra vonatkozó jogokat változtat. Pl.: SITE CHMOD 755 fájlnév
HELP	help-et kér valamiről. Pl.: SITE HELP
NEWER	egy adott dátumnál újabb fájlokat listázza
MINFO	mint a  SITE NEWER, de több extra információt ad
GROUP	különleges csoportelérés kérése. Pl.: SITE GROUP foo
GPASS	különleges csoportelérési jelszó megadása. Pl.: SITE GPASS bar
EXEC	futtass egy programot.  Pl.: SITE EXEC program params

A többi, az Internet RFC 959-ben specifikált ftp-kéréseket felismeri, de ezek nincsenek implementálva. MDTM és SIZE nincsenek benne az RFC 959 -ben, de meg fognak jelenni a következő FTP RFC-ben. (Az RFC 2228 a következő, ami 1997-ben jelent meg - a ford.)

Az ftp szerver csak akkor fog megszakítani egy aktív fájlátvitelt, ha az ABOR parancsot megelőzi egy Telnet "Interrupt Process" (IP) jel és egy Telnet "Synch" jel, ahogyan az az Internet RFC 959-ben meg van írva. Ha adatátvitel közben kap egy STAT parancsot, amelyet egy Telnet IP és Synch előz meg, akkor az átvitel státusát küldi vissza.

Az ftpd a fájlneveket a csh(1) ``globbing'' konvenciói szerint interpretálja, vagyis a felhasználók használhatják a ``*?[]{}~'' metakaraktereket.

Az ftpd a felhasználókat négy szabály szerint authentikálja:

1)  A felhasználói névnek szerepelni kell az /etc/passwd fájlban, vagy egyéb, az operációs rendszernek megfelelő jelszóadatbázisban, és a jelszó nem lehet üres. Ilyenkor a jelszó megadása előtt semmilyen fájlműveletet nem lehet végrehajtani.

2)  A felhasználói névnek nem szabad az /etc/ftpusers fájlban szerepelnie.

3)  A felhasználónak kell legyen egy alapértelmezett parancsértelmezője, amit a getusershell(3) ad vissza.

4)  Ha a felhasználói név is ``anonymous'' vagy ``ftp'', egy anonymous ftp account kell legyen a jelszó fájlban (``ftp'' felhasználó). Ebben az esetben a felhasználó bármilyen jelszóval beléphet (a konvenció szerint ez a kliens gép neve). (ez itt egy elég régi manpage-részlet lehet - mint tudjuk, az email címet szokták kérni manapság -- a ford. megjegyzése)

Az utolsó esetben az ftpd különleges intézkedéseket tesz, hogy a kliens hozzáférési lehetőségeit korlátozza. A szerver egy chroot(2) rendszerhívást hajt végre az ``ftp'' felhasználó home könyvtárába. A rendszer biztonságának érdekében az ``ftp'' al-fát gondosan kell felépíteni, a következő szabályok betartása ajánlott:

~ftp)
    Tedd a home könyvtárat a root tulajdonába, és mások által nem írhatóvá.

~ftp/bin)
    Tedd ezt a könyvtárat a root tulajdonába, és mások által nem írhatóvá. Az ls(1) programnak jelen kell lennie, hogy a list parancsot támogassa. Ennek a programnak a jogai legyenek 111-re állítva.

~ftp/etc)
    Tedd ezt a könyvtárat a root tulajdonába, és mások által nem írhatóvá. A passwd(5) és group(5) fájloknak jelen kell lennie, hogy az ls parancs neveket, és ne számokat tudjon kiírni. Az operációs rendszertől függően más fájlokra is szükség lehet. Nézd meg a getpwent(3) könyvtári hívás kezikönyvlapját. A jelszó mező a passwd fájlban nincs használva, és nem ajánlott igazi titkosított jelszavakat tenni oda. Ezek a fájlok legyenek 444 joggal ellátva, és a root tulajdonában. Ne használd a rendszer /etc/passwd fájlját jelszó fájlként, vagy a rendszer /etc/group fájlját group fájlként az ~ftp/etc könyvtárban.

~ftp/pub)
    Csinálj egy ~ftp/pub alkönyvtárat 733 vagy 777 joggal, attól függően, hogy meg akarod-e engedni a normál felhasználoknak, hogy fájlokat töltesenelk fel.

EGY CSAK A BSD/OS RENDSZEREKEN HASZNÁLT AUTHENTIKÁCIÓS MECHANIZMUS
Az ftpd által használt authentikációs mechenizmust az /etc/login.conf fájlban található ``auth-ftp'' bejegyzés határozza meg. (lásd login.conf(5)) amely illeszkedik a felhasználói osztályra. Ha nincs az adott osztálynak megfelelő ``auth-ftp'' bejegyzés, akkor a normál ``auth'' bejegyzés kerül felhasználásra. Egy alternatív authentikációs mechanizmust is meg lehet adni egy kettőspont (``:'') után, például: ``joe:skey''.

ÁLTALÁNOS FTP KITERJESZTÉSEK

Van néhány kiterjesztése az FTP szervernek, például ha a felhasználó egy fájlnevet ad meg (a RETRIEVE parancs használatákor):

 Igazi fájlnév  Megadott fájlnév    Ami történik
 -------------  ------------------  -----------------------------------
 <fájlnév>.Z   <fájlnév>          Kitömöríti a fájlt küldés előtt
 <fájlnév>     <fájlnév>.Z        Tömöríti a fájlt küldés előtt
 <fájlnév>     <fájlnév>.tar      Tar (becsomagolja) a fájlt küldés előtt
 <fájlnév>     <fájlnév>.tar.Z    Tar (becsomagolja) és tömöríti a fájlt küldés előtt

(a ford. megjegyzése: ma már a compress helyett inkább a gzip
a szokásos fájltömörítési eljárás, .Z helyett .gz kiterjesztéssel)

Ezenkívül az ftp szerver megpróbálja az email címet ellenőrizni, és megszidja a felhasználót, ha nem megy át a teszten. (Mivel általában egy email címről csak akkor lehet biztosan tudni, hogy érvényes, ha egy levelet küldünk oda és nem jön vissza, nem túl nehéz átverni az ftp szervert - a ford. megjegyzése) Azok a felhasználók, akiknek az ftp-kliense kiakad a többsoros válaszoktól, adjanak meg egy kötőjelet a jelszavuk első karaktereként, ez le fogja tiltani a szerver lreply() függvényének a használatát.

Az FTP szerver képes az összes fájlátvitelt loggolni, megőrizve a követező információkat:

Mon Dec  3 18:52:41 1990 1 wuarchive.wustl.edu 568881 /files.lst.Z a _ o a chris@wugate.wustl.edu ftp 0 *

  %.24s %d %s %d %s %c %s %c %c %s %s %d %s
    1   2  3  4  5  6  7  8  9  10 11 12 13

  1 aktuális idő NNN HHH nn óó:pp:mm ÉÉÉÉ alakban
  2 az adatátviteli idő másodpercekben
  3 a távoli gép neve
  4 fájlméret bájtokban
  5 fájl neve
  6 átvitel típusa (a>scii, b>inary)
  7 különleges flag-ek (összefüzve):
        C   a fájl compress-el össze volt tömörítve
        U   a fájl ki volt tömörítva
        T   a fájl tar-olva volt
        _   semmi különleges nem történt
  8 a fájl kiment a felhasználónak (o>utgoing) vagy tőle érkezett
    (i>ncoming)
  9 anonymous-ként elérve(r>eal, a>nonymous, g>uest)
 10 lokális felhasználói név, vagy guest esetén a megadott név
    (anonymous FTP jelszó)
 11 szervíz név ('ftp', other)
 12 authentikációs módszer (bitmaszk)
        0   semmi
        1   RFC931 authentikáció
 13 authentikált user id (ha elérhető, '*' egyébként)

LÁSD MÉG
ftp(1), getusershell(3), syslogd(8), ftpaccess(5), xferlog(5), umask(2)

HIBÁK
Az anonymous account természeténél fogva veszélyes, és elkerülendő, amikor csak lehetséges.

A szervernek root-ként kell futnia, hogy privilégizált portokon hozhasson létre socketeket. A belépett felhasználó effektív felhasználói id-jét használja, és csak addig root, amíg a címeket összeköti (bind) a port-számokkal. A lehetséges biztonsági lyukakat rendkívüli elővigyázatossággal tömködték be, de nem biztos, hogy mind sikerült.

MAGYAR FORDÍTÁS
Balázs-Csíki László <bcsl@elender.hu>