dokumentacja bftpd jezyk polski] napisana przez Max-Wilhelm Bruker Ten dokument stanowi dokumentacje serwera bftpd. ______________________________________________________________________ Table of Contents 1. Wprowadzenie 2. Instalacja 2.1 Kompilacja 2.2 Uruchamianie serwera 3. Konfiguracja 3.1 Zarzadzanie uzytkownikami 3.2 Plik konfiguracji (/etc/bftp.conf) 3.2.1 Sekcja globalna 3.2.2 Sekcja uzytkownikow 3.2.3 Sekcja grup uzytkownikow 3.2.4 Sekcja katalogow 4. FAQ 4.1 Problemy z kompilacja 4.1.1 Nie moge skompilowac bftpd 4.1.2 Wystepuja dziwne ostrzezenia 4.1.3 Make mowi ze nie moge uzywac wtmp 4.2 Problemy przy uruchamianiu 4.2.1 Otrzymuje komunikat "Could not get peer IP address." 4.2.2 Dostaje blad "Bind failed: Address already in use." 4.3 Problemy podczas sesji FTP 4.3.1 Mam blad podobny do "500 Unknown command: 'foo'" 4.3.2 Sesja sie konczy bledem 421 4.4 Rozne 4.4.1 Jak dziala kompresja w locie? 4.4.2 Moje opcje dla polaczen anonymous nie dzialaja 4.4.3 Dlaczego dokumentacja jest tak uboga? 5. Credits 5.1 Testowanie na roznych platformach 5.2 Pomysly, uwagi& fragmenty kodu 5.3 Pisanie dokumentacji 5.4 Inne ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee bfptd jest serwerem FTP dla Linuxa, BSD/OS, FreeBSD, Solarisa, DG-UXa oraz Tru64 (nie wiem czy dziala on na innych systemach, jesli probowales, napisz do mnie). Uruchamiany moze byc poprzez inetd badz w trybie standalone (demon). bftpd stara sie byc bardzo elastycznym przy zachowaniu malego rozmiaru oraz swojej szybkosci. Mozesz wprowadzac wartosci domyslne dla kazdej opcji w konfiguracji a nastepnie nadpisywac je poprzez lokalne parametry. Do zalet bftpd zaliczyc mozna: +o Prosta konfiguracje +o Predkosc +o Obsluge wiekszosci komend FTP RFC +o Kompresje w locie do archiwow .tar.gz +o Bezpieczenstwo poprzez proste wprowadzenie chroota +o Brak koniecznosci udostepniania basha oraz innych komend w srodowisku chroot +o Logowanie do wtmp oraz do pliku badz demona syslogd +o Obsluge PAM oraz hasel passwd/shadow +o Obsluge komend SITE CHOWN/CHMOD 22.. IInnssttaallaaccjjaa 22..11.. KKoommppiillaaccjjaa Najpierw uruchom nastepujace polecenia (zamieniajac x.x.x na wersje, ktora instalujesz): tar xzf bftpd-x.x.x.tar.gz cd bftpd-x.x.x ./configure make make install [wymaga roota] Wiedz, ze jesli upgradujesz bftpd ze starszej wersji, musisz recznie skopiowac plik bftpd.conf do katalogu /etc, poniewaz polecenie 'make install' nie nadpisuje pliku konfiguracyjnego. Uwaga: Jesli chcesz korzystac z opcji kompresji w locie do .tar.gz, musisz sciagnac kody zrodlowe gzipa oraz paxa i rozpakowac je do katalogu zrodlowego bftpd. Nastepnie, zamiast uruchomic "./configure", wykonaj "./configure --enable-pax=katalog-z-paxem --enable- gzip=katalog-z-gzipem". 22..22.. UUrruucchhaammiiaanniiee sseerrwweerraa Do wyboru masz uruchamianie bftpd poprzez inetd oraz w trybie standalone (demon). JJeessllii cchhcceesszz kkoorrzzyyssttaacc zz iinneettdd:: Dodaj nastepujacy wpis do /etc/inetd.conf: ftp stream tcp nowait root /usr/sbin/bftpd bftpd Wyslij inetdowi sygnal HUP lub zrestartuj system. Od tego momentu bftpd powinien pracowac. JJeessllii cchhcceesszz uurruucchhoommiicc bbffttppdd jjaakkoo ddeemmoonnaa ((ssttaannddaalloonnee)):: Kaz systemowi uruchamiac: /usr/sbin/bftpd -d przy starcie. 33.. KKoonnffiigguurraaccjjaa 33..11.. ZZaarrzzaaddzzaanniiee uuzzyyttkkoowwnniikkaammii Mozesz obslugiwac konta uzytkownikow w bardzo prosty sposob, edytujac plik /etc/passwd oraz, jesli Twoj system to obsluguje, /etc/shadow. Kazdy uzytkownik wystepujacy w /etc/passwd moze sie polaczyc z serwerem jesli poda haslo i spelni wymagania konfiguracji serwera bftpd. Mozna rowniez zalozyc konto anonymous, ustawiajac zmienna ANONYMOUS_USER na yes. bftpd obsluguje rowniez PAM. 33..22.. PPlliikk kkoonnffiigguurraaccjjii ((//eettcc//bbffttpp..ccoonnff)) 33..22..11.. SSeekkccjjaa gglloobbaallnnaa W tej sekcji mozesz nadawac wartosci opcjom konfiguracji. Skladnia jest nastepujaca: global { nazwa1=wartosc1 nazwa2=wartosc2 } 33..22..22.. SSeekkccjjaa uuzzyyttkkoowwnniikkooww W konfiguracji wystepuje rowniez sekcja uzytkownikow, w ktorej mozesz nadpisywac wartosci globalne dla poszczegolnych uzytkownikow. Przyklad: global { nazwa1=wartosc1 nazwa2=wartosc2 } user foo { nazwa1=wartosc3 } Jesli uzytkownik foo sie zaloguje, to nazwa pierwsza bedzie miala wartosc3. Jesli zalogowany jest inny uzytkownik, nazwa1 ma warosc1, natomiast nazwa2 ma zawsze wartosc2. 33..22..33.. SSeekkccjjaa ggrruupp uuzzyyttkkoowwnniikkooww Mozesz takze definiowac konfiguracje grupom uzytkownikow - podobnie jak dla jednego uzytkownika, tylko mozesz przydzielic ich kilku pod postacia grupy. Mozesz rowniez umieszczac w konfiguracji grupy systemowe dodajac do ich nazwy znak @. Przyklad: group foo,bar,@baz { nazwa1=wartosc1 } Te opcje oddzialuja na uzytkownikow foo i bar oraz na kazdego z grupy systemowej baz. 33..22..44.. SSeekkccjjaa kkaattaallooggooww Mozesz ustalac opcje, ktore beda wazne tylko dla uzytkownikow znajdujacych sie w danym katalogu, badz jego podkatalogach. Wez pod uwage, ze musisz umiescic te struktury w opcjach globalnych, uzytkownikow oraz grup. W ten sposob mozesz takze nadpisywac specyficzne ustawienia katalogu dla danych uzytkownikow. Przykladowo: global { nazwa=wartosc1 directory /foo { nazwa1=wartosc2 } } user bar { directory /foo { nazwa1=wartosc3 } } Tutaj, nazwa1 bedzie miala warosc3 jesli uzytkownik bar bedzie w kata- logu /foo. Natomiast wartosc2 przybierze jesli inny uzytkownik zna- jdzie sie w katalogu /foo. Kazdy inny przypadek spowoduje nadanie nazwie1 wartosci1. Wyjasnienie tych opcji znajdziesz w pliku konfiguracyjnym bftpd (jesli nie upgradowales bftpd, plik zostal juz skopiowany do /etc). Zmodyfikuj oczywiscie plik do twoich potrzeb. Jednak domyslna konfiguracja tez powinna byc w porzadku. 44.. FFAAQQ 44..11.. PPrroobblleemmyy zz kkoommppiillaaccjjaa 44..11..11.. NNiiee mmooggee sskkoommppiilloowwaacc bbffttppdd Daj mi znac. Powiedz na jakim systemie i architekturze go kompilowales, przeslij tez wyjscie calego procesu kompilacji (configure i make). Nie dostaje ton poczty, wiec postaram sie rozwiazac Twoj problem. Jesli natomiast nie odpowiem, prawie zapomnialem o Twoim mailu, wiec go ponow :) 44..11..22.. WWyysstteeppuujjaa ddzziiwwnnee oossttrrzzeezzeenniiaa To jest calkiem mozliwe na platformach, na ktorych nie testowalem bftpd. Nawet jesli bftpd skompiluje sie prawidlowo i dziala bez zarzutu, prosze, przeslij mi informacje na ten temat, gdyz kompilator moze powodowac niezauwazalne na pierwszy rzut oka problemy. 44..11..33.. MMaakkee mmoowwii zzee nniiee mmooggee uuzzyywwaacc wwttmmpp Prawdopodobnie uzywasz Solarisa. Poniewaz nie mam dostepu do takiej maszyny, nigdy nie moglem sprawdzic jej wtmp. Jesli otrzymujesz taki komunikat i nie wiesz czym jest w ogole wtmp, nie martw sie o to. Jesli jest inaczej, pomoz mi rozwiazac problem. 44..22.. PPrroobblleemmyy pprrzzyy uurruucchhaammiiaanniiuu 44..22..11.. OOttrrzzyymmuujjee kkoommuunniikkaatt ""CCoouulldd nnoott ggeett ppeeeerr IIPP aaddddrreessss.."" Uruchomiles bftpd przez konsole. Jesli chcialbys z niego korzystac w trybie standalone, musisz dodac opcje "-d". Jesli jednak ustawiles go jako usluge inetd, sprawdz to przez: hostname:~$ ftp localhost 44..22..22.. DDoossttaajjee bbllaadd ""BBiinndd ffaaiilleedd:: AAddddrreessss aallrreeaaddyy iinn uussee.."" Ten blad oznacza, ze inny proces juz wykorzystuje port, na ktorym chcesz uruchomic serwer bftpd. Mozesz zmienic numer portu bftpd w pliku konfiguracyjnym (bftpd.conf) - opcja PORT w strukturze globalnej. Domyslnie ustawiony jest na 21. Jesli nie zmieniales tego portu, prawdopodobnie zapomniales wylaczyc swoj stary serwer FTP. Zajrzyj do /etc/inetd.conf oraz do wydruku polecenia "ps aux | grep ftp". 44..33.. PPrroobblleemmyy ppooddcczzaass sseessjjii FFTTPP 44..33..11.. MMaamm bbllaadd ppooddoobbnnyy ddoo ""550000 UUnnkknnoowwnn ccoommmmaanndd:: ''ffoooo''"" Twoj program wyslal komende, ktorej bftpd nie rozpoznal. To jest moj blad, chyba ze rzeczywiscie wyslales nieistniejace polecenie. Sprawdz czy sie nie pomyliles przy jego wpisywaniu i wyslij mi raport, jesli masz pewnosc, ze komenda byla dobra. 44..33..22.. SSeessjjaa ssiiee kkoonncczzyy bblleeddeemm 442211 Jesli porobujesz sie zalogowac ze zlym haslem, bftpd zerwie polaczenie. Jesli sie zalogowales zanim blad sie pojawil, badz blad wystapil przed zalogowaniem, to na pewno jest moj blad. Powiedz mi o tym. 44..44.. RRoozznnee 44..44..11.. JJaakk ddzziiaallaa kkoommpprreessjjaa ww lloocciiee?? Zalozmy, ze masz katalog nazywajacy sie foo. Nawet jesli nie ma pliku o nazwie foo.tar.gz, mozesz jednak uzyc polecenia RETR i bedzie on zaweral zawartosc katalogu foo, tar-gzipowana. Mozesz rowniez sciagac pliki: +o dirname.tar +o filename.gz Jesli chcesz korzystac z tej opcji, wkompiluj ja najpierw (patrz: instalacja) 44..44..22.. MMoojjee ooppccjjee ddllaa ppoollaacczzeenn aannoonnyymmoouuss nniiee ddzziiaallaajjaa Jesli w strukturze jest opcja ALIAS=...., nie musisz uzupelniac jej opcjami. Zamiast tego, zrob to w sekcji, do ktorej sie alias odnosi. 44..44..33.. DDllaacczzeeggoo ddookkuummeennttaaccjjaa jjeesstt ttaakk uubbooggaa?? Odpowiedz jest prosta, nikt niczego nie napisal :) Nigdy nie wiem co napisac, wiec jesli masz jakas wizje wzbogacenia dokumentacji, prosze, poinformuj mnie o tym. To samo dotyczy tlumaczen na inne jezyki. Jesli chcialbyc cos stworzyc, zrob to, jednak zwracaj uwage na bledy stylistyczne i literowki. 55.. CCrreeddiittss 55..11.. TTeessttoowwaanniiee nnaa rroozznnyycchh ppllaattffoorrmmaacchh +o David L. Nicol (david@kasey.umkc.edu) testowal bftpd na Tru64. +o JackRipper (vic@altoona.net) testowal bftpd na BSD/OS oraz DG-UX. +o Christian Beyerlein (christian@beyerlein.de) testowal bftpd na FreeBSD i Solarisie. +o Ludzie z kanalu #linux (IRCNet) sprawdzali bftpd na roznych systemach. 55..22.. PPoommyyssllyy,, uuwwaaggii&& ffrraaggmmeennttyy kkoodduu +o Josh Woodcock (josh@hamparts.com) podzielil sie kiloma uwagami - Solaris 8. +o Floh (floh@maflohsoft.de) zasugerowal wbudowac obsluge ASCII. +o Erik Hensema (erik@hensema.xs4all.nl) znalazl blad w netfilterze 2.4.0 wplywajacy na bftpd. +o Heiko Rother (rother@cmsnet.de) mial wiele dobrych pomyslow (patrz changelog). +o Christophe Bailleux (cb@grolier.fr) wprost uwielbia znajdowac problemy w listingowaniu katalogow. Poza tym mial wiele uwag i podeslal wiele fragmentow kodu. +o Jonathan Heusser (jonathanheusser@gyml.unibas.ch) znalazl blad przepelnienia bufora. +o Christian Beyerlein (christian@beyerlein.de) zaproponowal aliasy uzytkownikow. +o Elmusafir (jslmarti@campus.cem.itesm.mx) doniosl o bledzie we wspolpracy ze Staroffice, ktory naprawiono w wersji 1.0.8. +o Alex Madden (alexm@immstudios.com) oraz Daniel Mack (daniel.mack@nextra.de) napisali o niekompatybilnosci z Solarisem - naprawiono w 1.0.8. +o Daniel Mack (daniel.mack@nextra.de) podeslal duzego patcha (patrz changelog). 55..33.. PPiissaanniiee ddookkuummeennttaaccjjii +o Radek Michalski (radek@end.p-s.com.pl) przetlumaczyl dokumentacje bftpd na jezyk polski. 55..44.. IInnnnee +o Kilka pomyslow struktry kodu zaczerpnalem z betaftpd Steinera H. Gutersona. Ale to raptem kilka linii.