VSFTPD to bardzo prosty ale i bezpieczny serwer FTP dla systemów uniksowych i Linuxa. Aby go zainstalować użyjemy polecenia sudo apt install vsftpd -y
Po zakończeniu sprawdzamy czy ftp działa poleceniem sudo systemctl status vsftpd. Widzimy, że jest OK i możemy rozpocząć jego wstępną konfigurację
Teraz edytujemy plik vsftpd.conf, który znajduje się w katalogu /etc. Najpierw zrobimy jednak jego kopię poleceniem:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf-kopia
Po utworzeniu kopii, edytujemy nasz plik poleceniem sudo nano /etc/vsftpd.conf. Na razie nic w nim nie będziemy zmieniać, ważne by te dwie opcje nie były "zahaszowane"
Najpierw utworzymy sobie na serwerze użytkownika, którym będziemy logować się z klienta na serwer FTP. Niech to będzie: bondjftp
Teraz sprawdzimy czy jest folder domowy naszego użytkownika, przejdziemy do niego i utworzymy w nim trzy pliki
Teraz spróbujemy z klienta zalogować się na nasz serwer ftp tym użytkownikiem. Stosujemy polecenie: ftp 10.80.80.1 i naciskamy enter. Potem wpisujemy nazwę użytkownika i hasło. Jak widać udało się zalogować i sprawdzimy co znajduje się na serwerze ftp
Następnie pobierzemy na pulpit plik "1.txt". Najpierw za pomocą polecenia lcd zmienimy nasz katalog lokalny na "/home/steve/Pulpit", a potem użyjemy polecenia get 1.txt. Plik oczywiście został pobrany
Teraz utworzymy na "Pulpicie" plik "10.txt" i spróbujemy go wysłać na serwer poleceniem put 10.txt. Jak widać nie udało się. Domyślnie zapis na serwerze ftp jest zablokowany
Aby umożliwić opcję zapisu, należy edytować plik sudo nano /etc/vsftpd.conf i odnaleźć wpis "write_enable=YES". Domyślnie jest on "zahaszowany", więc musimy zdjąć komentarz i zapisujemy zmiany
Należy też zrestartować serwer ftp poleceniem sudo systemctl restart vsftpd i sprawdzić status serwera.
Następnie z klienta logujemy się ponownie do serwera ftp, sprawdzamy co się na nim znajduje, zmieniamy nasz katalog lokalny na "/home/steve/Pulpit" i wysyłamy plik "10.txt". Jak widać teraz już wszystko się udało
Jest jeszcze jedna rzecz, którą warto zrobić. Jak widać poniżej wadą takiego rozwiązania jest możliwość przeglądania przez naszego użytkownika zasobów serwera (nie tylko ftp)
Aby to zmienić musimy edytować plik konfiguracyjny sudo nano /etc/vsftpd.conf i odnaleźć lub wprowadzić powyższe opcje. Przy okazji ustawimy sobie baner powitalny na naszym serwerze. Następnie restartujemy serwer ftp
Logujemy się ponownie na nasz serwer i widzimy, że nasz baner powitalny jest już ustawiony. Dodatkowo nie możemy opuścić już swojego katalogu
Serwer ftp może też służyć użytkownikom anonimowym. Edytujemy plik poleceniem sudo nano /etc/vsftpd.conf i tam włączamy go zmieniając parametr anonymous_enable=YES. Oczywiście restartujemy serwer ftp
Logujemy się na nasz serwer za pomocą anonimowego użytkownika i bez hasła. Sprawdzamy zawartość i widzimy, że nie ma tam jeszcze żadnych danych.
Domyślnym katalogiem dla anonimowych użytkowników jest /srv/ftp. Utworzymy tam trzy nowe pliki
Logujemy się ponownie na nasz serwer za pomocą anonimowego użytkownika i widzimy, że nasze pliki już tam się znajdują. Zmienimy ścieżkę na pulpit i pobierzemy jeden z nich. Jak widać - udało się
Możemy też zmienić lokalizację naszego serwera ftp dla anonimowych użytkowników. Najpierw utworzymy sobie jakiś katalog. Niech to będzie /home/ftp
Następnie edytujemy plik sudo nano /etc/vsftpd.conf i tam dodajemy wpis anon_root=/home/ftp i restartujemy serwer ftp
Ponownie logujemy się na serwer i widzimy, że na naszym "nowym" serwerze jeszcze nic nie ma
Wracamy na nasz serwer i w katalogu /home/ftp utworzymy trzy nowe pliki
Logujemy się ponownie na nasz serwer za pomocą anonimowego użytkownika i widzimy, że nasze pliki już tam się znajdują. Standardowo już zmienimy ścieżkę na pulpit i pobierzemy jeden z nich. Jak widać - udało się
Gdybyśmy jednak chcieli coś wysłać na serwer to może być z tym problem. Widzimy odmowę dostępu. Po pierwsze: na publicznym serwerze w katalogu głównym nie ma możliwości zapisu, a po drugie na chwilę obecną nie mamy uprawnień do dokonywania jakiegokolwiek zapisu
Żeby móc zapisywać na publicznym serwerze ftp to najpierw edytujemy plik sudo nano /etc/vsftpd.conf i tam zdejmujemy komentarz z dwóch wpisów. Zapisujemy zmiany i restartujemy serwer ftp
A potem stworzymy katalog sudo mkdir /home/ftp/ftpzapis, w którym będziemy te czynności wykonywać i damy pełne prawa dla wszystkich użytkowników
Logujemy się na nasz serwer, przejdziemy do stworzonego katalogu, zmienimy lokalną ścieżkę, wyślemy plik "1.txt" z Pulpitu i dodatkowo utworzymy folder anonim1. Wszystko się udało!
Możemy sprawdzić na serwerze, że nasze dane tam się znajdują
Tym razem musimy sobie założyć co chcemy zrobić. Na naszym autoryzowanym serwerze FTP utworzymy trzy foldery oraz kilku użytkowników. Część z nich będzie miało dostęp do jednego folderu, część do drugiego, a do trzeciego wszyscy. Wykorzystamy do tego grupy Tworzymy główny folder w katalogu "/home" dla serwera FTP - mainftp, a w nim trzy foldery: men, women, people
Stworzymy również trzy grupy: aktorzy, aktorki, artysci. Wyświetlimy sobie również zawartość pliku /etc/group aby sprawdzić czy zadziałało
Teraz utworzymy sześciu użytkowników: aktorka1, aktorka2, aktorka2, aktor1, aktor2, aktor3. Dodamy ich automatycznie do odpowiedniej grupy i narzucimy im wspólny katalog domowy /home/mainftp. Zabierzemy im też możliwość interaktywnego logowania do systemu. Poleceniem getent group nazwa_grupy sprawdzimy członków danej grupy
Musimy jeszcze ustawić im hasła poleceniem sudo passwd nazwa_użytkownika
Teraz utworzymy na serwerze FTP w naszych katalogach po dwa pliki i sprawdzimy czy się udało
Aby nasi użytkownicy mogli się zalogować do serwera FTP, musimy jeszcze edytować plik "shells" poleceniem sudo nano /etc/shells i dodać wpis "/usr/sbin/nologin". Zapisujemy, zamykamy i możemy działać
Logujemy się teraz naszym użytkownikiem i sprawdzamy czy ma dostęp do utworzonych katalogów. Będzie to aktor1. Sprawdzamy dostęp katalogu men i pobieramy jakiś plik (ok) i próbujemy coś wysłać (nie udało się).
Następnie sprawdzamy czy użytkownik aktor1 ma dostęp katalogu women. Pobieramy jakiś plik (ok) i próbujemy coś wysłać (nie udało się).
Na koniec sprawdzamy czy użytkownik aktor1 ma dostęp katalogu people. Pobieramy jakiś plik (ok) i próbujemy coś wysłać (nie udało się). Podobnie sytuacja wygląda z pozostałymi użytkownikami
Teraz zrobimy tak jak założyliśmy sobie na początku. Uprawnimy grupy do odpowiednich katalogów, zmienimy im prawa dostępu i przypiszemy wszystkich użytkowników do grupy "people". Właścielem katalogów pozostawimy roota
Przypiszemy jeszcze naszych użytkowników do odpowiednich grup (jeśli grupy aktorzy i aktorki nie mają przypisanych użytkowników, to należy ich dodać). Edytujemy plik sudo nano /etc/group dokonujemy wpisów, zapisujemy zmiany, zamykamy plik i restartujemy serwer ftp
Logujemy się na serwer z klienta użytkownikiem np. aktorka3. Przechodzimy do katalogu women (sukces), zmieniamy sobie ścieżkę lokalną na pulpit i próbujemy wysłać plik 1.txt. Udało się!
Następnie logujemy się na serwer tym samym użytkownikiem aktorka3. Przechodzimy do katalogu men (brak dostępu). Przechodzimy zatem do folderu people (sukces), zmieniamy sobie ścieżkę lokalną na pulpit i próbujemy wysłać plik 1.txt. Udało się!
Powtarzamy teraz te same czynności ale użytkownikiem z grupy aktorzy. Logujemy się na nasz serwer z klienta użytkownikiem np. aktor2. Przechodzimy do katalogu men (sukces), zmieniamy sobie ścieżkę lokalną na pulpit i próbujemy wysłać plik 1.txt. Udało się!
Następnie logujemy się na serwer tym samym użytkownikiem aktor2. Przechodzimy do katalogu women (brak dostępu). Przechodzimy zatem do folderu people (sukces), zmieniamy sobie ścieżkę lokalną na pulpit i próbujemy wysłać plik 2.txt. Udało się! Nasze uprawnienia funkcjonują właściwe.