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 [AT] wugate.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 [AT] elender.hu>