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. 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: bondjftp1.
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ą lcd zmienimy sobie ścieżkę, a potem użyjemy polecenia get 1.txt
Teraz spróbujemy wysłać z pulpitu plik 10.txt 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źć poniższy wpis. 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/bondj/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żytkownik zasobów serwera (nie tylko ftp).
Aby to zmienić musimy edytować plik konfiguracyjny sudo nano /etc/vsftpd.conf i odnaleźć lub wprowadzić poniższe opcje. Przy okazji ustawimy sobie baner powitalny na naszym serwerze. Następnie restartujemy serwer ftp.
Logujemy się 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 sudo nano /etc/vsftpd.conf i tam włączamy go zmieniając parametr anonymous_enable=YES.
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ę dla plików anonimowych użytkowników. Najpierw utworzymy sobie taki katalog. Niech to będzie /home/ftp.
Następnie edytujemy plik sudo nano /etc/vsftpd.conf i tam dodajemy parametr anon_root=/home/ftp i restartujemy serwer ftp.
Ponownie się logujemy na serwer i widzimy, że na naszym "nowym" serwerze 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ą. Zmienimy ścieżkę na pulpit i pobierzemy jeden z nich. Jak widać - udało się.
Gdybyśmy jednak chcieli coś wysłać to może być z tym problem. Widzimy odmowę dostępu. Po pierwsze na publicznym serwerze w katalogu głównym nie ma takiej możliwości, a po drugie na chwilę obecną nie mamy uprawnień do dokonywania 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.
Zalogujemy się teraz na nasz serwer, przejdziemy do stworzonego katalogu, zmienimy lokalną ścieżkę aby móc wysłać plik z Pulpitu i utworzymy dodatkowo folder anonim1. Wszystko się udało!
Możemy sprawdzić na serwerze, że nasze dane się tam znajdują.
Tym razem musimy sobie założyć co chcemy zrobić. Na naszym 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. Potem ustawimy im hasła.
Teraz utworzymy na serwerze FTP w naszych katalogach po dwa pliki. Możemy oczywiście też to sprawdzić czy się udało.
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ę).
Logujemy się teraz naszym użytkownikiem i sprawdzamy czy ma dostęp do utworzonych katalogów. Będzie to aktor1. Sprawdzamy dostęp katalogu women i pobieramy jakiś plik (ok) i próbujemy coś wysłać (nie udało się).
Logujemy się teraz naszym użytkownikiem i sprawdzamy czy ma dostęp do utworzonych katalogów. Będzie to aktor1. Sprawdzamy dostęp katalogu people i pobieramy jakiś plik (ok) i próbujemy coś wysłać (nie udało się). Podobnie będzie z pozostałymi użytkownikami.
Teraz zrobimy tak jak założyliśmy sobie na początku. Najpierw uprawnimy grupy do odpowiednich katalogów, potem zmienimy im prawa dostępu i przypiszemy wszystkich użytkowników do grupy ludzie. 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 i restartujemy serwer ftp.
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 z Pulpitu 1.txt. Widzimy, że się udało.
Logujemy się na nasz serwer z klienta użytkownikiem np. aktor2. Przechodzimy do katalogu women. Jak widzimy nie mamy dostępu. Przechodzimy zatem do folderu people (sukces) zmieniamy sobie ścieżkę lokalną na pulpit i próbujemy wysłać plik z Pulpitu 1.txt. Widzimy, że się udało.
Powtarzamy teraz te same czynności ale użytkownikiem z grupy aktorki. Logujemy się na nasz 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 z Pulpitu 1.txt. Widzimy, że się udało.
Logujemy się na nasz serwer z klienta użytkownikiem np. aktorka3. Przechodzimy do katalogu men. Jak widzimy nie mamy dostępu. Przechodzimy zatem do folderu people (sukces) zmieniamy sobie ścieżkę lokalną na pulpit i próbujemy wysłać plik z Pulpitu 1.txt. Widzimy, że się udało.