Konfiguracja wirtualnych użytkowników na serwerze proFTPd.

Czy ten poradnik wydaje Ci się przydatny?

Nie
17
85%
Nie
3
15%
 
Liczba głosów: 20
Awatar użytkownika
sibul
Wytworny Kaczor
Wytworny Kaczor
Posty: 318
Rejestracja: 16 paź 2007, 22:29
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64

Konfiguracja wirtualnych użytkowników na serwerze proFTPd.

Post autor: sibul » 21 lut 2009, 04:21

Konfiguracja serwera FTP na wirtualnych użytkownikach proFTPd.

Zaczynamy od instalacji serwera ftp.

Kod: Zaznacz cały

sudo apt-get install proftpd
Przechodzimy do konfiguracji proftpd gdzie dopisujemy parę linijek do pliku konfiguracyjnego.

Kod: Zaznacz cały

sudo mcedit /etc/proftpd/proftpd.conf
i podmieniamy plik konfiguracyjny na następujący:
Include /etc/proftpd/modules.conf
UseIPv6 off
ServerName "FTP SERWER"
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DefaultRoot ~
#DisplayLogin welcome.msg
#DisplayFirstChdir .message
ListOptions "-l"
DenyFilter \./
UseReverseDNS off
IdentLookups off
RequireValidShell off
AuthUserFile /home/ftpd.passwd
Port 21
MaxInstances 30
User serwer
Group ftpusers
Umask 022 022
AllowOverwrite on
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
<IfModule mod_tls.c>
TLSEngine off
</IfModule>
<IfModule mod_quota.c>
QuotaEngine on
</IfModule>
<IfModule mod_ratio.c>
Ratios on
</IfModule>
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine on
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine on
</IfModule>
# A basic anonymous configuration, no upload directories.
<Anonymous ~ftp>
User ftp
Group nogroup
# # We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous ftp
# # Cosmetic changes, all files belongs to ftp user
DirFakeUser on ftp
DirFakeGroup on ftp
#
RequireValidShell off
#
# # Limit the maximum number of anonymous logins
MaxClients 10
#
# # We want 'welcome.msg' displayed at login, and '.message' displayed
# # in each newly chdired directory.
DisplayLogin welcome.msg
DisplayFirstChdir .message
#
# # Limit WRITE everywhere in the anonymous chroot
<Directory /home/ftp>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
#
# # Uncomment this if you're brave.
# # <Directory incoming>
# # # Umask 022 is a good standard umask to prevent new files and dirs
# # # (second parm) from being group and world writable.
# # Umask 022 022
# # <Limit READ WRITE>
# # DenyAll
# # </Limit>
# # <Limit STOR>
# # AllowAll
# # </Limit>
# # </Directory>
#
</Anonymous>
Zapisujemy konfigurację (F2) po czym restartujemy serwer ftp:

Kod: Zaznacz cały

sudo /etc/init.d/proftpd restart
Tworzymy teraz grupę (pamiętajmy aby zapisać numer utworzonej grupy) i przypisujemy do niej tworzonego użytkownika (przykładowo):

Kod: Zaznacz cały

sudo addgroup ftpusers

Kod: Zaznacz cały

sudo adduser serwer --ingroup ftpusers --shell /bin/false --no-create-home
Kolejnym etapem jest stworzenie katalogu z odpowiednimi prawami i właścicielem.

Kod: Zaznacz cały

sudo mkdir /home/serwer

Kod: Zaznacz cały

sudo chown serwer:ftpusers /home/serwer

Kod: Zaznacz cały

sudo chmod 751 /home/serwer
Przydatnym narzędziem okazać się może mały prosty skrypt napisany w bashu, którego zadaniem jest stworzenie konta ftp, katalogu i nadanie mu odpowiednich praw. Skrypt umieszczamy w miejsce gdzie będzie znajdował się nasz plik ftpd.passwd czyli w /home
Do dzieła:

Kod: Zaznacz cały

sudo mcedit /home/ftp
(o ile mamy zainstalowane mc) wklejamy do skryptu następującą zawartość:
#!/bin/sh
ftpasswd --shell /bin/false --home /home/serwer/$1 -p --name $2 --uid 1013 --gid 1008
mkdir /home/serwer/$1
chown -R serwer:ftpusers /home/serwer/$1
chmod 751 /home/serwer/$1
echo "Gotowe, dodano użytkownika: $2"
(pamiętajmy aby odpowiednio uzupełnić --uid oraz --gid gdyż numery usera i grupy podane w skrypcie pasują do mojego użytkownika. Musicie wpisać w to miejsce numer swojego użytkownika serwer i grupy ftpusers. Znajdziecie to w pliku /etc/passwd)
Zapisujemy (F2) i nadajemy prawa wykonywania

Kod: Zaznacz cały

sudo chmod +x /home/ftp
Jak już widać po składni w skrypcie rozróżniamy 2 parametry pierwszy z nich to nazwa katalogu jaki zostanie utworzony, drugim parametrem jest ustalenie loginu dla naszego nowego użytkownika ftp.
Przykładowe wykorzystanie skryptu.

Kod: Zaznacz cały

./ftp katalog_janka janek
Gdzie wiadomo że zostanie utworzony katalog /home/serwer/katalog_janka oraz wpis w ftpd.passwd o loginie janek.
Jeśli już wszystko zrobiliśmy, nie pozostaje nam nic innego jak odblokowanie portu 21 na którym działać będzie nasz serwer FTP i sprawdzenie poprawności naszej konfiguracji poprzez próbę połączenia.

Kod: Zaznacz cały

sudo iptables -I INPUT -p tcp --dport 21 -j ACCEPT
Od tej chwili nasz serwer ftp na wirtualnych użytkownikach powinien działać prawidłowo.
Nowych użytkowników robimy jak już napisałem wyżej
przechodząc do home

Kod: Zaznacz cały

cd /home

Kod: Zaznacz cały

./ftp folder login (wtedy skrypt zapyta o hasło dla nowego usera, po wpisaniu wciskamy enter i konto zostało utworzone).
Enjoy :] :mrgreen:
OS X 10.8.3
ODPOWIEDZ

Wróć do „Software-Sieć”