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:
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.pdb1)
– lokalizacja pliku z bazą danych wirtualnych użytkowników, jeśli nie zamierzamy korzystać to wykomentujemy tą linię
PAMAuthentication yes2)
– autentykacja za pomocą PAM (wymagane dla użytkowników systemowych)
Umask 1333):0224)
– 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_user5) -u 650006) -g 650007) -d8) /home/virtual_ftp/ftp_user9) -t 102410) -T 102411) -n 500012)13) -N 102414)15) -r 192.168.0.0/24,192.168.1.1016)17) -R 192.168.2.0/24,192.168.3.1018)19) -i 192.168.0.1,192.168.2.120)21) -I 192.168.1.1,192.168.3.122)23) -y 324)25) -z 0900-170026) -
(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_user27) -
(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_user28)
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_user29) -u 6500030) -g 6500031) -d32) /home/virtual_ftp/ftp_user33) -t 102434) -T 102435) -n 500036)37) -N 102438)39) -r 192.168.0.0/24,192.168.1.1040)41) -R 192.168.2.0/24,192.168.3.1042)43) -i 192.168.0.1,192.168.2.144)45) -I 192.168.1.1,192.168.3.146)47) -y 348)49) -z 0900-170050) -
(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