Are you a developer? Try out the
KONFIGURACJA SERWERA FTP (PROFTPD)
1) Instalacja serwera
2) Uruchamianie i zatrzymywanie serwera
3) Konfiguracja serwera
1) Instalacja serwera
Najnowsza wersja serwera ProFTPd znajduje się pod adresem :
ftp://ftp.proftpd.org/distrib/
Mamy tu możliwość ściągnięcia źródeł lub gotowych paczek zawierających serwer ftp.
Należy pamiętać, że kompilacja źródeł daje większe możliwości dostosowania serwera do naszych
potrzeb.
W katalogu, który powstanie po rozpakowaniu źródeł programu wydajemy polecenie :
./configure [opcje]
Najważniejsze opcje konfiguracyjne to :
Are you a developer? Try out the
--prefix=/ścieżka
- miejsce, w które zostanie zainstalowny nasz serwer ftp
--with-modules=mod_moduł1:mod_moduł2:..
. - dodanie modułów :
mod_pam - obsługa PAM (umożliwia obsługę użytkowników nie tylko jako anonymous)
mod_ratio - włączenie ratio
mod_readme - pozwala na obsługę plków README itp.
mod_ldap - obsługa LDAP
mod_sql - obsługa Sql
--sysconfdir=/ścieżka
- położenie pliku konfiguracyjnego (standardowo /usr/local/etc )
--localstatedir=/ścieżka
- położenie plików dziennika zdarzeń (standardowo /usr/local/var)
--enable-shadow
- umożliwia korzystanie z pliku shadow zawierającego hasła użytkowników
Przykładowo polecenie to może wyglądać następująco :
./configure --prefix=/usr/local/proftpd --enable-shadow --with-
modules=mod_pam
Kompilację i instalację dokonujemy poprzez polecenia :
make
Are you a developer? Try out the
make install
Jeśli serwer został skompilowany z modułem pam, należy skopiować plik /contrib/ftpd.pamd na
/etc/pam.d/ftp
Następnym krokiem jest stworzenie katalogu ftp :
mkdir /home/ftp
i nadanie mu odpowiednich praw :
chmod 755 /home/ftp
2) Uruchamianie i zatrzymywanie serwera
Serwer ftp możemy uruchamiać na dwa sposoby :
jako standalone
- uruchamiany podczas startu systemu i działający w nim przez cały czas
jako intetd
- uruchamiany przez specjalnego demona (inetd lub xinetd) tylko do obsłużenia
rządania
Jeśli chcemy aby serwer uruchamiał się jako
standalone
należy na końcu pliku /etc/rc.d/rc.local
umieścić linię ze ścieżką do naszego serwera : /usr/local/sbin/proftpd.
Are you a developer? Try out the
Należy pamietać o wstawieniu znaku # przed linią odpowiadającą za uruchamianie serwera w pliku
inetd.conf lub wstawić dyrektywę disable = yes w pliku z konfiguracją dla xinetd.
Aby serwer uruchamiany był tylko do obsługi przychodzących rządań (
inetd
) należy dodać
odpowiednie wpisy do pliku superserwera (inetd lub xinetd).
/etc/inetd.conf
ftp stream tcp nowait root /usr/sbin/proftpd proftpd
/etc/xinetd.conf
service ftp
{
flags = REUSE
socket_type = stream
instances = 50
wait = no
user = root
server = /usr/sbin/proftpd
log_on_success = HOST PID
log_on_failure = HOST RECORD
}
Are you a developer? Try out the
3) Konfiguracja serwera
Konfiguracja serwera ProFTPd polega podbnie jak konfiguracja APACHA na ustawianiu odpowiednich
dyrektyw.
Plikie konfiguracyjny serwera jest plik : /usr/local/etc/proftpd.conf
Najważniesze dyrektywy konfiguracyjne to :
ServerType
typ serwera : standalone , inetd
ServerAdmin adres_administratora
Zawiera adres e-mailowy administratora.
ServerName "nazwa serwera"
Wyświetlana podczas logowania nazwa serwer.
Are you a developer? Try out the
User nazwa_użytkownika
Określa właściciela uruchomionego serwera.
Group nazwa_grupy
Określa grupę właściciela uruchomionego serwera.
MaxClients liczba_połączeń
Określa maksymalną liczbę obsługiwanych jednocześnie połączeń ftp.
TransferLog /ścieżka/plik
Okeśla miejsce zapisywania logów serwera dotyczących transferu plików.
Domyślnie : /var/log/xferlog
DefaultRoot /ścieżka/katalog
Określa katalog główny serwera.
Domyślnie : /
Are you a developer? Try out the
AuthUserFile /ścieżka/plik
Określa alternatywny plik passwd o identycznym formacie jak systemowy plik /etc/passwd.
Dyrektywa ta umożliwia stworzenie osobnych kont ftp dla użytkowników nie posiadających konta na
serwerze.
Jeśli dyrektywa została podana to plik będzie używany do identyfikacji użytkowników.
Umask maska
Ustawia maskę z uprawnieniami dla nowo tworzonych plików i katalogów.
Wszystkie argumenty tej dyrektywy muszą być podane jako liczba ósemkowa, w formacie 0xxx.
Opcjonalnie drugi argument może podawć maskę, która będzie używana w czasie tworzenia
katalogów. Gdy nie jest on podany to katalogi będą tworzone według maski podanej dla plików.
Ósemkowy zapis praw dostępu :
Wartość ósemkowa
Znaczenie
0000
Nikt nie ma żadnych praw
0001
Prawo właściciela do wykonywania pliku
0002
Prawo właściciela do modyfikacji pliku
0004
Prawo właściciela do czytania pliku
0010
Prawo członków grupy do wykonywania pliku
Are you a developer? Try out the
0020
Prawo członków grupy do modyfikacji pliku
0040
Prawo członków grupy do czytania pliku
0100
Prawo innych użytkowników do wykonywania pliku
0200
Prawo innych użytkowników do modyfikacji pliku
0400
Prawo innych użytkowników do czytania pliku
1000
Ustawienie sticky bitu
2000
Ustawienie bitu SGID
4000
Ustawienie bitu SUID
<Anonymous root-directory> </Anonymous>
Blok konfiguracyjny używany do udostępniania serwera ftp użytkownikom nie posiadającym konta na
serwerze - tzw. użytkownikom anonimowym.
Parametr root-directory określa katalog główny poza który nie wolno wyjść danym użytkownikom.
<Directory /ścieżka/katalog> </Directory>
Blok konfiguracyjny umożliwiający zmianę ustawień danego katalogu.
<Limit komenda grupa_komend> </Limit>
Are you a developer? Try out the
Blok konfiguracyjny używany do określania szczegółowych restrykcji dotyczących wykonywania
komend ftp wysyłanych przez klienta.
Komendy :
CWD , CDUP
- zmiana katalogu
MKD
- tworzenie nowego katalogu
RNFR , RNTO
- zmiena położenia pliku między katalogami
DELE
- kasowanie pliku
RMD
- kasowanie katalogu
RETR
- transfer pliku z serwera do klienta
STOR
- transfer pliku od klienta do serwera
Grupa komendy :
READ
- wszystkie komendy ftp wiążące się z czytaniem pliku, np.: RETR, STAT
WRITE
- wszystkie komendy ftp wiążące się z zapisem, tworzeniem, kasowaniem, np.: MKD, RMD
DIRS
- wszystkie komendy ftp wiążące się z wyświetleniem zawartości katalogu, np.: LIST, NLST
ALL
- wszystkie komendy ftp
Allow from [all , network , host , domain]
Dyrektywa ta jest używana wewnątrz bloku <Limit> i określa dla kogo będą udostępnione odpowiednie
komendy.
Domyślnie: allow all
Are you a developer? Try out the
Deny from [all , network , host , domain]
Dyrektywa ta jest używana wewnątrz bloku <Limit> i określa dla kogo będą zabronione odpowiednie
komendy.
AllowAll
Dyrektywa używana wewnątrz bloku <Limit> do udostępnienia wszystkim danej komendy lub grupy
komend.
DenyAll
Dyrektywa używana wewnątrz bloku <Limit> do zabronienia wszystkim danej komendy lub grupy
komend.
<VirtualHost adres> </VirtualHost>
Blok konfiguracyjny używany do tworzenia wydzielonych konfiguracji, które będą stosowane w
stosunku do różnych nazw hostów lub adresów IP (na tym samym komputerze).