tftpd - server de protocol trivial de transfer de
fișiere
in.tftpd [opțiuni...] director...
tftpd este un server pentru Trivial File Transfer Protocol.
Protocolul TFTP este utilizat pe scară largă pentru a asigura
pornirea de la distanță a dispozitivelor fără
disc. În mod normal, serverul este pornit de inetd, dar poate
funcționa și independent.
- --ipv4,
-4
- Se conectează numai cu IPv4, chiar dacă a fost compilat
suportul IPv6.
- --ipv6,
-6
- Se conectează numai cu IPv6, dacă a fost compilat suportul
IPv6.
- -l, --listen
- Rulează serverul în modul autonom (ascultare), în loc
să fie rulat din inetd. În modul de ascultare,
opțiunea --timeout este ignorată, iar opțiunea
--address poate fi utilizată pentru a specifica o
adresă sau un port local specific pe care să se
asculte.
- --foreground,
-L
- Similar cu --listen, dar nu se detașează de procesul
din prim-plan. Implică --listen.
- --address
[adresă][:port], -a
[adresă][:port]
- Specifică o anumită adresă și
port pe care să le asculte atunci când este apelat cu
opțiunea --listen sau --foreground. Valoarea
implicită este de a asculta portul tftp specificat în
/etc/services pe toate adresele locale.
Atenție: Adresele numerice IPv6 trebuie
să fie incluse între paranteze drepte pentru a evita
ambiguitățile cu informațiile opționale
despre port.
- --create,
-c
- Permite crearea de noi fișiere. În mod implicit,
tftpd va permite doar încărcarea de fișiere
care există deja. Fișierele sunt create cu permisiuni
implicite care permit oricui să le citească sau să le
scrie, cu excepția cazului în care sunt specificate
opțiunile --permissive sau --umask.
- --secure,
-s
- Schimbă directorul rădăcină la pornire. Acest
lucru înseamnă că gazda la distanță nu
trebuie să transmită directorul ca parte a transferului
și poate spori securitatea. Atunci când este specificat
--secure, trebuie specificat exact un director în
linia de comandă. Utilizarea acestei opțiuni este
recomandată pentru securitate, precum și pentru
compatibilitate cu unele ROM-uri de pornire care nu pot fi ușor de
făcut să includă un nume de director în
cererea sa.
- --user
nume-utilizator, -u nume-utilizator
- Specifică numele de utilizator cu care va rula tftpd;
valoarea implicită este „nobody”. ID-ul de
utilizator, ID-ul de grup și (dacă este posibil pe
platformă) ID-urile de grup suplimentare vor fi stabilite la cele
specificate în baza de date cu permisiuni de sistem pentru acest
nume de utilizator.
- --umask umask,
-U umask
- Stabilește umask pentru fișierele nou create la
valoarea specificată. Valoarea implicită este zero (oricine
poate citi sau scrie) dacă opțiunea --permisiv nu
este specificată sau moștenită de la procesul de
invocare dacă opțiunea --permisiv este
specificată.
- --permissive,
-p
- Nu efectuează nicio verificare suplimentară a permisiunilor
în plus față de controalele de acces normale
furnizate de sistem pentru utilizatorul specificat prin intermediul
opțiunii --user.
- --pidfile
fișier-pid, -P fișier-pid
- Atunci când este rulat în modul autonom, scrie ID-ul de
proces al serverului care ascultă în
fișier-pid. La terminarea normală (SIGTERM sau
SIGINT), fișierul pid este eliminat automat.
- --timeout
timp-așteptare, -t
timp-așteptare
- Atunci când este rulat din inetd, acest lucru
specifică cât timp, în secunde, trebuie să se
aștepte o a doua conexiune înainte de a termina serverul.
inetd va reporni apoi serverul atunci când apare o
altă cerere. Valoarea implicită este 900 (15 minute).
- --retransmit
timp-așteptare, -T
timp-așteptare
- Determină timpul de așteptare implicit, în
microsecunde, înainte ca primul pachet să fie retransmis.
Acest lucru poate fi modificat de către client dacă se
negociază opțiunea timeout sau utimeout.
Valoarea implicită este 1000000 (1 secundă).
- --map-file
fișier-recartografiere, -m
fișier-recartografiere
- Specifică utilizarea recartografierii numelor de fișiere.
fișier-recartografiere este un fișier care
conține regulile de recartografiere. A se vedea secțiunea de
mai jos referitoare la recarografierea numelor de fișiere. Este
posibil ca această opțiune să nu fie
compilată; consultați ieșirea din in.tftpd -V
pentru a verifica dacă este sau nu disponibilă.
- Specifică
numărul de reguli de reînregistrare care pot fi executate
înainte
- ca înregistrarea numelui de fișier să eșueze.
Valoarea implicită este 4096.
- --verbose,
-v
- Crește gradul de detaliere a jurnalizării lui tftpd.
Această opțiune poate fi specificată de mai multe ori
pentru o cantitate și mai mare de detalii.
- --verbosity
valoare
- Stabilește gradul de detaliere la valoare.
- --refuse
opțiune-tftp, -r opțiune-tftp
- Indică că o anumită opțiune RFC 2347 TFTP nu
trebuie să fie acceptată niciodată.
- --blocksize
dimensiune-maximă-bloc, -B
dimensiune-maximă-bloc
- Specifică dimensiunea maximă permisă a blocului.
Intervalul permis pentru acest parametru este de la 512 la 65464. Unii
clienți încorporați solicită dimensiuni mari
ale blocurilor și totuși nu gestionează corect
pachetele fragmentate; pentru acești clienți, se
recomandă să stabiliți această valoare la cel
mai mic MTU din rețeaua dumneavoastră minus 32 de
octeți (20 de octeți pentru IP, 8 pentru UDP și 4
pentru TFTP; mai puțin dacă utilizați opțiuni
IP în rețeaua dumneavoastră). De exemplu, pe un
Ethernet standard (MTU 1500), o valoare de 1468 este
rezonabilă.
- --port-range
port:port, -R port:port
- Forțează numărul de port al serverului (ID-ul
tranzacției) să se afle în intervalul specificat de
numere de port.
- --version,
-V
- Afișează numărul versiunii și
configurația la ieșirea standard, apoi iese.
Această versiune de tftpd acceptă negocierea
opțiunilor RFC 2347. Opțiunile implementate în prezent
sunt:
- blksize (RFC
2348)
- Stabilește dimensiunea blocului de transfer la o valoare mai
mică sau egală cu cea a opțiunii specificate.
Această versiune de tftpd poate accepta orice dimensiune a
blocului până la maximul teoretic de 65464
octeți.
- blksize2
(non-standard)
- Stabilește dimensiunea blocului de transfer la orice valoare mai
mică sau egală cu opțiunea specificată, dar
limitează răspunsurile posibile la puteri de 2. Maximul este
de 32768 octeți (cea mai mare putere de 2 mai mică sau
egală cu 65464).
- tsize (RFC
2349)
- Raportează dimensiunea fișierului care urmează
să fie transferat. Această versiune de tftpd
acceptă doar opțiunea tsize pentru transferurile
în modul binar (octet).
- timeout (RFC
2349)
- Stabilește timpul înainte ca serverul să
retransmită un pachet, în secunde.
- utimeout
(non-standard)
- Stabilește timpul înainte ca serverul să
retransmită un pachet, în microsecunde.
- rollover
(non-standard)
- Stabilește numărul de bloc la care trebuie să se reia
după o schimbare a numărului de bloc. Valoarea
implicită și recomandată este zero.
Opțiunea --refuse poate fi utilizată pentru a
dezactiva anumite opțiuni specifice; acest lucru poate fi necesar
pentru a rezolva erori în anumite implementări ale
clienților TFTP. De exemplu, s-a constatat că unii
clienți TFTP solicită opțiunea blksize, dar se
blochează cu o eroare în cazul în care primesc efectiv
opțiunea acceptată de server.
Opțiunea --map-file specifică un
fișier care conține reguli de recartografiere a numelor de
fișiere. Fiecare linie fără comentarii (comentariile
încep cu simboluri hash, #) conține o
operație, specificată mai jos; o exp-reg, o
expresie regulată în stilul egrep; și,
opțional, un model de înlocuire. Operația
indicată de operație se efectuează dacă
exp-reg se potrivește cu tot sau cu o parte din numele
fișierului. Regulile sunt procesate de sus în jos și,
în mod implicit, toate regulile sunt procesate chiar dacă
există o potrivire.
operația poate fi orice combinație a
următoarelor litere:
- r
- Înlocuiește subșirul de caractere care se
potrivește expresiei regulate exp-reg cu modelul de
înlocuire. Modelul de înlocuire poate conține
secvențe de eludare; a se vedea mai jos.
- g
- Repetă această regulă până când
nu se mai potrivește. Aceasta se utilizează
întotdeauna cu r.
- gg
- Repetă această regulă până când
nu se mai potrivește, dar numai pe porțiunea de șir
care nu a fost încă comparată, similar cu modul
în care funcționează comanda s cu
opțiunea g în sed(1). Aceasta este
întotdeauna utilizată cu r.
- i
- Potrivește exp-reg fără a ține cont de
diferența dintre majuscule și minuscule. În mod
implicit, este sensibil la majuscule și minuscule.
- e
- Dacă această regulă se potrivește,
încheie procesarea regulilor după executarea regulii.
- E
- Dacă această regulă corespunde, și
rezultatul corespunde unui nume de fișier care poate fi
transferat, se încheie procesarea regulii după
executarea regulii. Dacă aceasta este combinată cu r,
atunci dacă substituția nu are ca rezultat un nume de
fișier valid, substituția este anulată. Aceasta nu
poate fi combinată cu g, dar poate fi
combinată cu gg.
- s
- În cazul în care această regulă se
potrivește, începe procesarea regulilor de la prima
regulă după executarea acestei reguli.
- a
- Dacă această regulă se potrivește, se
refuză cererea și se trimite clientului o eroare de acces
refuzat.
- G
- Această regulă se aplică numai solicitărilor
GET (RRQ).
- P
- Această regulă se aplică numai solicitărilor
PUT (WRQ).
- 4
- Această regulă se aplică numai sesiunilor IPv4.
- 6
- Această regulă se aplică numai sesiunilor IPv6.
- ~
- Inversează sensul acestei reguli, adică execută
operația numai dacă exp-reg nu se
potrivește. Nu poate fi utilizată împreună
cu r.
Următoarele secvențe de eludare/control sunt
recunoscute ca făcând parte dintr-un model de
înlocuire:
- \0
- Întregul șir de caractere care se potrivește cu
exp-reg.
- \1 la \9
- Șirurile de caractere care corespund fiecăreia dintre
primele nouă subexpresii între paranteze, \( ... \), ale
modelului exp-reg.
- \i
- Adresa IP a gazdei solicitante, în notație
„patru-între-puncte” pentru IPv4 (de exemplu,
192.0.2.169) sau în forma convențională cu
două puncte „:” pentru IPv6 (de exemplu,
2001:db8::1).
- \x
- Adresa IP a gazdei solicitante, în notație
hexazecimală extinsă (de exemplu, C00002A9 pentru IPv4 sau
20010DB8000000000000000000000000000000000001 pentru IPv6).
- \\
- Bară oblică inversă literală.
- \spațiu-în-alb
- Spațiu în alb literal.
- \#
- Semnul hash literar.
- \U
- Transformă toate literele următoare în
majuscule.
- \L
- Transformă toate literele următoare în
minuscule.
- \E
- Anulează efectul lui \U sau \L.
Dacă fișierul de cartografiere este modificat,
trebuie să trimiteți SIGHUP la orice proces
tftpd rămas în așteptare.
Utilizarea serviciilor TFTP nu necesită un cont sau o
parolă pe sistemul server. Din cauza lipsei informațiilor de
autentificare, tftpd va permite doar accesarea fișierelor care
pot fi citite public (o+r), cu excepția cazului în care se
specifică opțiunea --permisive. Fișierele pot fi
scrise numai dacă există deja și pot fi scrise
în mod public, cu excepția cazului în care se
specifică opțiunea --create. Rețineți
că acest lucru extinde conceptul de „public” pentru a
include toți utilizatorii de pe toate gazdele care pot fi accesate
prin rețea; este posibil ca acest lucru să nu fie adecvat pe
toate sistemele, iar implicațiile sale trebuie luate în
considerare înainte de a activa serviciul TFTP. În mod normal,
ar trebui să se utilizeze vreun tip de paravan de protecție
sau o soluție de filtrare a pachetelor. Dacă este compilat
în mod corespunzător (a se vedea ieșirea lui
in.tftpd --version), tftpd va interoga baza de date
hosts_access(5) pentru informații privind controlul accesului.
Acest lucru poate fi lent; siturile care necesită o
performanță maximă ar putea dori să compileze
fără această opțiune și să se
bazeze în schimb pe paravanul de protecție sau pe filtrele de
pachete bazate pe nucleu.
Serverul ar trebui să fie configurat să ruleze ca
utilizator cu cel mai mic privilegiu posibil; consultați
opțiunea --user. Este probabil o idee bună să
creați un cont de utilizator specific pentru tftpd, mai
degrabă decât să îl lăsați
să ruleze ca „nobody”, pentru a vă proteja
împotriva scurgerilor de privilegii între
aplicații.
Accesul la fișiere poate și ar trebui să fie
restricționat prin invocarea tftpd cu o listă de
directoare prin includerea numelor de rute ca argumente ale programului
server în linia de comandă. În acest caz, accesul este
restricționat la fișierele ale căror nume sunt
prefixate de unul dintre directoare. Dacă este posibil, se
recomandă să se utilizeze opțiunea --secure
pentru a configura un mediu chroot() în care serverul să
ruleze după ce a fost stabilită o conexiune.
În cele din urmă, suportul pentru recartografierea
numelui de fișier (opțiunea --map-file flag) poate fi
utilizat pentru a oferi un control suplimentar limitat al accesului.
ÎN CONFORMITATE CU
RFC 1123, Requirements for Internet Hosts - Application and
Support - (Cerințe pentru gazdele din Internet - Aplicație
și asistență).
RFC 1350, The TFTP Protocol (revision 2) - (Protocolul TFTP (revizia
2)).
RFC 2347, TFTP Option Extension - (Extensie opțiune TFTP).
RFC 2348, TFTP Blocksize Option - (Opțiunea TFTP pentru dimensiunea
blocurilor).
RFC 2349, TFTP Timeout Interval and Transfer Size Options _ (Opțiuni
privind intervalul de temporizare TFTP și dimensiunea
transferului).
Această versiune de tftpd este
întreținută de H. Peter Anvin <hpa@zytor.com>. Ea
a fost derivată din, dar a deviat substanțial de la o
bază sursă OpenBSD, la care au fost adăugate corecturi
de către Markus Gutschke și Gero Kulhman.
tftp(1), egrep(1), umask(2),
hosts_access(5), regex(7), inetd(8). Traducerea
în limba română a acestui manual a fost
făcută de Remus-Gabriel Chelu
<remusgabriel.chelu@disroot.org> Această traducere este
documentație gratuită; citiți sau o versiune
ulterioară cu privire la condiții privind drepturile de autor.
NU se asumă NICIO RESPONSABILITATE. Dacă găsiți
erori în traducerea acestui manual, vă rugăm să
trimiteți un e-mail la