dokumentacja bftpd [jezyk polski] napisana przez Max-Wilhelm Bruker Ten dokument stanowi dokumentacje serwera bftpd. Wprowadzenie

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: Prosta konfiguracje Predkosc Obsluge wiekszosci komend FTP RFC Kompresje w locie do archiwow .tar.gz Bezpieczenstwo poprzez proste wprowadzenie chroota Brak koniecznosci udostepniania basha oraz innych komend w srodowisku chroot Logowanie do wtmp oraz do pliku badz demona syslogd Obsluge PAM oraz hasel passwd/shadow Obsluge komend SITE CHOWN/CHMOD

Instalacja Kompilacja

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 &dquot;./configure --enable-pax=katalog-z-paxem --enable-gzip=katalog-z-gzipem&dquot;.

Uruchamianie serwera

Do wyboru masz uruchamianie bftpd poprzez inetd oraz w trybie standalone (demon). Jesli chcesz korzystac z inetd: 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. Jesli chcesz uruchomic bftpd jako demona (standalone): Kaz systemowi uruchamiac: /usr/sbin/bftpd -d przy starcie.

Konfiguracja Zarzadzanie uzytkownikami

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.

Plik konfiguracji (/etc/bftp.conf) Sekcja globalna

W tej sekcji mozesz nadawac wartosci opcjom konfiguracji. Skladnia jest nastepujaca: global { nazwa1=wartosc1 nazwa2=wartosc2 }

Sekcja uzytkownikow

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.

Sekcja grup uzytkownikow

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.

Sekcja katalogow

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 katalogu /foo. Natomiast wartosc2 przybierze jesli inny uzytkownik znajdzie 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.

FAQ Problemy z kompilacja Nie moge skompilowac bftpd

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 :)

Wystepuja dziwne ostrzezenia

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.

Make mowi ze nie moge uzywac wtmp

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.

Problemy przy uruchamianiu Otrzymuje komunikat &dquot;Could not get peer IP address.&dquot;

Uruchomiles bftpd przez konsole. Jesli chcialbys z niego korzystac w trybie standalone, musisz dodac opcje &dquot;-d&dquot;. Jesli jednak ustawiles go jako usluge inetd, sprawdz to przez: hostname:˜$ ftp localhost

Dostaje blad &dquot;Bind failed: Address already in use.&dquot;

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 &dquot;ps aux | grep ftp&dquot;.

Problemy podczas sesji FTP Mam blad podobny do &dquot;500 Unknown command: 'foo'&dquot;

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.

Sesja sie konczy bledem 421

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.

Rozne Jak dziala kompresja w locie?

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: dirname.tar filename.gz Jesli chcesz korzystac z tej opcji, wkompiluj ja najpierw (patrz: instalacja)

Moje opcje dla polaczen anonymous nie dzialaja

Jesli w strukturze jest opcja ALIAS=...., nie musisz uzupelniac jej opcjami. Zamiast tego, zrob to w sekcji, do ktorej sie alias odnosi.

Dlaczego dokumentacja jest tak uboga?

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.

Credits Testowanie na roznych platformach

David L. Nicol (david@kasey.umkc.edu) testowal bftpd na Tru64. JackRipper (vic@altoona.net) testowal bftpd na BSD/OS oraz DG-UX. Christian Beyerlein (christian@beyerlein.de) testowal bftpd na FreeBSD i Solarisie. Ludzie z kanalu #linux (IRCNet) sprawdzali bftpd na roznych systemach.

Pomysly, uwagi& fragmenty kodu

Josh Woodcock (josh@hamparts.com) podzielil sie kiloma uwagami - Solaris 8. Floh (floh@maflohsoft.de) zasugerowal wbudowac obsluge ASCII. Erik Hensema (erik@hensema.xs4all.nl) znalazl blad w netfilterze 2.4.0 wplywajacy na bftpd. Heiko Rother (rother@cmsnet.de) mial wiele dobrych pomyslow (patrz changelog). Christophe Bailleux (cb@grolier.fr) wprost uwielbia znajdowac problemy w listingowaniu katalogow. Poza tym mial wiele uwag i podeslal wiele fragmentow kodu. Jonathan Heusser (jonathanheusser@gyml.unibas.ch) znalazl blad przepelnienia bufora. Christian Beyerlein (christian@beyerlein.de) zaproponowal aliasy uzytkownikow. Elmusafir (jslmarti@campus.cem.itesm.mx) doniosl o bledzie we wspolpracy ze Staroffice, ktory naprawiono w wersji 1.0.8. Alex Madden (alexm@immstudios.com) oraz Daniel Mack (daniel.mack@nextra.de) napisali o niekompatybilnosci z Solarisem - naprawiono w 1.0.8. Daniel Mack (daniel.mack@nextra.de) podeslal duzego patcha (patrz changelog).

Pisanie dokumentacji

Radek Michalski (radek@end.p-s.com.pl) przetlumaczyl dokumentacje bftpd na jezyk polski.

Inne

Kilka pomyslow struktry kodu zaczerpnalem z betaftpd Steinera H. Gutersona. Ale to raptem kilka linii.