====== Serwer FTP z użytkownikami systemowymi + wirtualnymi ====== == 1. Instalacja z portów == Wchodzimy do katalogu ''/usr/ports/ftp/pure-ftpd'' i wydajemy polecenie: \\ \\ '' # **make config** \\ '' Ustawiamy opcje następująco: {{:wiki:freebsd:pure-ftpd:pure-ftpd_okno_konfiguracji.png|}} Po zatwierdzeniu ustawień, kompilujemy i instalujemy: \\ \\ '' # **make install clean** '' == 2. Konfiguracja Pure-FTPd == Plik konfiguracyjny znajduje się w katalogu ''/usr/local/etc'' i jest nazwany ''pure-ftpd.conf''. Wyedytujmy kilka opcji:\\ \\ '' ChrootEveryone No'' -- jest to bezwzględne trzymanie każdego użytkownika w chroot, pozwolimy na wyjątki od chroot-a o czym poniżej \\ ''TrustedGID 14'' -- użytkownicy systemowi będący w grupie 14 (ftp) nie będą mieli chroot-a po zalogowaniu (reszta ma chroot) \\ ''BrokenClientsCompatibility No'' -- autor nie spotkał się jeszcze z przypadkami niekompatybilnych klientów, dlatego ta opcja jest wyłączona \\ ''MaxClientsNumber 10'' -- liczba jednoczneśnie zalogowanych użytkowników \\ ''MaxClientsPerIP 3'' -- maksymalna liczba logowań z jednego IP \\ ''DisplayDotFiles No'' -- ukrywanie plików, których nazwy zaczynaja się od kropki \\ ''AnonymousOnly No'' -- włączenie tej opcji spowoduje że będzie można logować się tylko na serwer anonimowy \\ ''NoAnonymous yes'' -- wyłączenie serwera anonimowego (użytkownicy: anonymous oraz ftp) \\ ''DontResolve no'' -- jeśli mamy wolny DNS, możemy wyłączyć rozwiązywanie nazw revDNS \\ ''MaxIdleTime 15'' -- maksymalny czas nieaktywności po którym użytkownik zostanie wylogowany \\ ''PureDB /usr/local/etc/pureftpd.pdb((kolejność tych wpisów jest jednocześnie kolejnością w jakiej serwer będzie próbował autentykować użytkowników, czyli najpierw sprawdza w bazie wirtualnej, jak nie znajdzie to szuka użytkownika w systemie poprzez PAM))'' -- lokalizacja pliku z bazą danych wirtualnych użytkowników, jeśli nie zamierzamy korzystać to wykomentujemy tą linię \\ ''PAMAuthentication yes((kolejność tych wpisów jest jednocześnie kolejnością w jakiej serwer będzie próbował autentykować użytkowników, czyli najpierw sprawdza w bazie wirtualnej, jak nie znajdzie to szuka użytkownika w systemie poprzez PAM))'' -- autentykacja za pomocą PAM (wymagane dla użytkowników systemowych) \\ ''Umask 133((umask plików)):022((umask katalogów))'' -- Umask dla nowo tworzonych plików i katalogów. W tym przypadku pliki będą tworzone z prawami 644 a katalogi z prawami 755 \\ ''MinUID 1000'' -- minimalny UID użytkownika dopuszczonego do logowania \\ ''AllowUserFXP yes'' -- zezwolenie na FXP (możliwość transferu plików między serwerami FTP bez użycia łącza użytkownika, **używać z rozwagą** \\ ''MaxDiskUsage 99'' -- maksymalna zajętość dysku, po przekroczeniu której nie będzie możliwe uploadowanie plików na serwer \\ ''FileSystemCharset utf-8'' -- definicja kodowania systemu plików jakiego używamy na serwerze, należy ustawić właściwy \\ ''ClientCharset cp1250'' -- przydatna opcja kompatybilności dla klienta Total Commander w wersji < 7.50 i użytkowników systemów Windows 2000/XP. Powoduje prawidłowe wyświetlanie polskich znaków narodowych. W przypadku innych klientów wystarczy włączyć obsługę UTF-8 (wysłanie przez klienta FTP do serwera polecenia ''OPTS UTF8 ON'') i nie będzie problemu \\ == 3. Konfiguracja użytkowników wirtualnych == Do konfiguracji użytkowników wirtualnych służy polecenie ''pure-pw''. Przykładowe dodanie użytkownika:\\ \\ '' # **pure-pw useradd //ftp_user//((nazwa użytkownika)) -u 65000((przykładowy UID użytkownika)) -g 65000((przykładowy GID użytkownika)) -d((wpisanie -D spowoduje że użytkownik nie będzie mial chroot))// /home/virtual_ftp/ftp_user//((ścieżka do katalogu użytkownika)) -t 1024((maksymalna prędkość pobierania z serwera w Kbps)) -T 1024((maksymalna prędkość wysyłania na serwer w Kbps)) -n 5000((maksymalna liczba plików jaką użytkownik może posiadać))((nie jest to QUOTA systemowa lecz własny mechanizm Pure-FTPd)) -N 1024((maksymalna liczba MegaBajtów jaką użytkownik może posiadać))((nie jest to QUOTA systemowa lecz własny mechanizm Pure-FTPd)) -r 192.168.0.0/24,192.168.1.10((dozwolona klasa IP lub adresy IP z jakich użytkownik może się logować))((w przypadku konfliktu, ALLOW ma pierwszeństwo nad DENY)) -R 192.168.2.0/24,192.168.3.10((zabroniona klasa IP lub adresy IP z jakich użytkownik nie może się logować))((w przypadku konfliktu, ALLOW ma pierwszeństwo nad DENY)) -i 192.168.0.1,192.168.2.1((dozwolone adresy IP lokalnego serwera do których użytkownik może się łączyć))((w przypadku konfliktu, ALLOW ma pierwszeństwo nad DENY)) -I 192.168.1.1,192.168.3.1((zabronione adresy IP lokalnego serwera do których użytkownik nie może się połączyć))((w przypadku konfliktu, ALLOW ma pierwszeństwo nad DENY)) -y 3((maksymalna liczba dozwolonych jednoczesnych sesji))((parametr ten napisuje ustawienie z głównej konfiguracji w pliku /usr/local/etc/pure-ftpd.conf)) -z 0900-1700((zakres czasu w jakim użytkownik może się logować na serwer, w tym przypadku w godzinach 9:00-17:00)) -m((parametr ten powoduje przebudowanie bazy binarnej dla Pure-FTPd z której daemon korzysta przy autentykacji))**'' \\ Wszystkie parametry poza: \\ * nazwą użytkownika * ''-u'' * ''-g'' * ''-d'' lub ''-D'' są opcjonalne. W przypadku nie wykorzystania parametru ''-m'', bazę można przebudować później wykonując polecenie:\\ \\ '' # **pure-pw mkdb**\\ '' Aby usunąć użytkownika wystarczy wykonać polecenie:\\ \\ '' # **pure-pw userdel //ftp_user//((nazwa użytkownika)) -m((parametr ten powoduje przebudowanie bazy binarnej dla Pure-FTPd z której daemon korzysta przy autentykacji))**\\ '' Listowanie wszystkich użytkowników wirtualnych:\\ \\ '' # **pure-pw list**\\ '' Wyświetlanie bieżących ustawień użytkownika:\\ \\ '' # **pure-pw show //ftp_user//((nazwa użytkownika))**\\ '' Modyfikacji ustawień użytkownika dokonuje się podobnie jak dodawanie nowego, z tą różnicą że zamiast polecenia ''useradd'' używamy ''usermod'':\\ \\ '' # **pure-pw usermod //ftp_user//((nazwa użytkownika)) -u 65000((przykładowy UID użytkownika)) -g 65000((przykładowy GID użytkownika)) -d((wpisanie -D spowoduje że użytkownik nie będzie mial chroot))// /home/virtual_ftp/ftp_user//((ścieżka do katalogu użytkownika)) -t 1024((maksymalna prędkość pobierania z serwera w Kbps)) -T 1024((maksymalna prędkość wysyłania na serwer w Kbps)) -n 5000((maksymalna liczba plików jaką użytkownik może posiadać))((nie jest to QUOTA systemowa lecz własny mechanizm Pure-FTPd)) -N 1024((maksymalna liczba MegaBajtów jaką użytkownik może posiadać))((nie jest to QUOTA systemowa lecz własny mechanizm Pure-FTPd)) -r 192.168.0.0/24,192.168.1.10((dozwolona klasa IP lub adresy IP z jakich użytkownik może się logować))((w przypadku konfliktu, ALLOW ma pierwszeństwo nad DENY)) -R 192.168.2.0/24,192.168.3.10((zabroniona klasa IP lub adresy IP z jakich użytkownik nie może się logować))((w przypadku konfliktu, ALLOW ma pierwszeństwo nad DENY)) -i 192.168.0.1,192.168.2.1((dozwolone adresy IP lokalnego serwera do których użytkownik może się łączyć))((w przypadku konfliktu, ALLOW ma pierwszeństwo nad DENY)) -I 192.168.1.1,192.168.3.1((zabronione adresy IP lokalnego serwera do których użytkownik nie może się połączyć))((w przypadku konfliktu, ALLOW ma pierwszeństwo nad DENY)) -y 3((maksymalna liczba dozwolonych jednoczesnych sesji))((parametr ten napisuje ustawienie z głównej konfiguracji w pliku /usr/local/etc/pure-ftpd.conf)) -z 0900-1700((zakres czasu w jakim użytkownik może się logować na serwer, w tym przypadku w godzinach 9:00-17:00)) -m((parametr ten powoduje przebudowanie bazy binarnej dla Pure-FTPd z której daemon korzysta przy autentykacji))**'' \\ Modyfikując wirtualną bazę użytkowników nie ma potrzeby przeładowywania serwera FTP po każdej modyfikacji. == 4. Uruchamianie serwera Pure-FTPd == Dodajemy do pliku ''/etc/rc.conf.local'' linię: \\ pureftpd_enable="YES" \\ Po czym uruchamiamy serwer:\\ \\ '' # **/usr/local/etc/rc.d/pure-ftpd start** \\ Starting pureftpd.\\ Running: /usr/local/sbin/pure-ftpd -g/var/run/pure-ftpd.pid -a14 -c10 -B -C3 -E -fftp -I15 -lpuredb:/usr/local/etc/pureftpd.pdb -lpam -L2000:8 -m4 -s -U133:022 -u1000 -w -i -k99 -Z -8utf-8 -9cp1250 ''\\