========= Apache 2 - katalogi uzytkowników, PHP, błędy ========= Instalujemy PHP: sudo apt-get install php libapache2-mod-php Robimy pliczek testowy PHP gdzie wywołujemy funkcje wyświetlającą informacje na temat PHP w naszym systemie: sudo nano /var/www/html/info.php restartujemy Apacha i testujemy: sudo systemctl restart apache2 Ustawienie, żeby pierwszym otwieranym plikiem był index.php a nie index.html sudo nano /etc/apache2/mods-enabled/dir.conf przestawiamy index.php na pierwszą pozycję w tej sekcji: DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm Tworzymy w katalogu strony domyślnej Apache pliczek index.php nano /var/www/html/index.php i wpisujemy taką zawartość: Po zapisaniu możemy przetestować – mimo że w katalogu są teraz dwa pliki index: to po wpisaniu adresu serwera zamiast tej strony domyślnej Ubuntu powinien się wyświetlić nasz pliczek PHP Włączenie katalogów użytkowników – użytkownicy będą mogli umieszczać strony WWW w swoich katalogach Włączamy mod do Apache2 odpowiedzialny za tą funkcję sudo a2enmod userdir Nie trudno się domyślić, ze konfiguracja tego moda znajduje się w katalogu mods-enabled, jak zajrzymy tam, to widać, że strony żytkowników beą przechowywane w ich katalogach domowych w podkatalogu public_html nano /etc/apache2/mods-enabled/userdir.conf Jeżeli byśmy chcieli żeby na przykład podkatalog na strony to był np.: user_sites, to oczywiście w powyższy pliku można by to przekonfigurować – my zostawiamy tak jak jest Przelogujmy się na zwykłego użytkownika, np. zsme (storzcie sobie usera inazwisko i robcie to z jego konta) i stwórzmy katalog public_html w jego katalogu domowym mkdir ~/public_html Zróbmy index.html i sprawdzamy czy działa (ukradnijmy z któregoś hosta wirtualnego z poprzedniego ćwiczenia ): cp /var/www/zsme.local/html/index.html /home/zsme/public_html/index.html Edytujemy ten pliczek do takiej postaci: teraz po wpisaniu adresu naszego serwera w ten sposób http://192.168.1.200/~zsme/index.html powinna się zgłosić strona danego usera (w naszym przypadku to będzie user zsme) PHP z katalogów użytkowników: Domyślnie obsługa PHP w katalogach użytkowników jest wyłączona – jeżeli użytkownik zrobi jakiś plik PHP w swoim katalogu public_html i spróbuje go wywołać, ten po prostu nie zadziała. Żeby włączyć tą obsługę musimy wyedytować ustawienia moda php, jak wszystkie inne mody znajdują się one oczywiście w katalogu mods-enabled w ustawieniach Apache: nano /etc/apache2/mods-enabled/ php7.2.conf Zgodnie z informacją z komentarza komentujemy 5 linijek, zapisujemy plik i restartujemy Apache. Teraz otwieramy sobie drugą konsolę (Ctrl+Alt+F2) i logujemy się na zsme (wy oczywiście na swojego usera inazwisko) i robimy pliczek testowy php o nazwie index.php z pętlą: nano ~/public_html/index.php "; } ?> Po wpisaniu w przeglądarkę adresu strony użytkownika zsme zgodnie z wcześniejsza konfiguracją pierwszy powinien zostać otwarty plik index.php i interpreter PHP powinien wykonać naszą pętle: Wyświetlanie błędów w plikach PHP Domyślnie PHP ma wyłączone wyświetlanie komunikatów o błędach które zrobimy w plikach php, zamiast nich wyświetla pustą stronę - na serwerze produkcyjnym to podejście jest jak najbardziej w porządku ze względu na bezpieczeństwo naszej strony (po co ktoś ma znać nazwy naszych zmiennych itd.). Jako użytkownik zsme skopiuję sobie nasz plik index.php i nazwe kopie blad.php cp ~/public_html/index.php ~/public_html/blad.php Zróbmy teraz w naszym pliku blad.php specjalnego popularnego błędom – usuńmy średnik Spróbujmy wyświetlić ta stronę: Strona po prostu się nie wyświetla (w innych przeglądarkach może to być pusta strona). Natomiast dla naszej wygody, jako że to środowisko służące tylko do ćwiczeń, dobrze sobie włączyć obsługę wyświetlania błędów. Musimy włączyć wyświetlanie komunikatów przez PHP w pliku php.ini nano /etc/php/7.2/apache2/php.ini Szukamy w pliku sekcji dotyczące błędów (sam plik jest mocno rozbudowany) I poniżej ustawiamy zmienną display_errors = On Zapisujemy, restartujemy Apache i sprawdzamy jak teraz działa Jak widać, teraz widzimy dokładną informacje o błędzie – w naszym przypadku braku średnika na końcu 5 linijki. ========= Instalacja Ubuntu Server 18.04 LTS ========= Sciągamy ISO z systemem z adresu: https://releases.ubuntu.com/18.04/ubuntu-18.04.4-live-server-amd64.iso lub z Sharepointa: https://zsmetarnow.sharepoint.com/:u:/s/PP_2i_projektowaniesiecikomputerowych/EapMGOVI5ZF PllAvW6XAp7cBpqpZ7BwpfnoD9blTADGPtQ?e=rXFybc Tworzymy nową maszynę w Virtual Box z takimi ustawieniami: Sieciówka może zostac w trybie NAT Wsadzamy plik ISO do wirtualnego napędu w maszynie: Wybieramy język: Nie robimy update podczas instalacji: Konfigurujemy klawiaturę: Sieciówki zostawiamy tak jak są: Nie wpisujemy PROXY Pozostawiamy bez zmian Ubuntu archive mirror Do zainstalowania używamy całej powierzchni dysku Wybieramy nasz dysk: Potwierdzamy: Konfigurujemy nazwę komputera i loginy/hasła Imie: wpiszcie swoje Nazwa serwera: inubuntu czyli dla Jan Kowalski nazwa to jkubuntu (pierwsze litery imienia i nazwiska plus ubuntu) Login/hasło : zsme/zsme Nie instalujemy OpenSSH Nie instalujemy dodatkowych pakietów: Czekamy aż instalacja się skończy : Robimy reboot i sprawdzamy czy możemy się zalogować: tutaj trzeba kliknąć Enter: Jeżeli wszystko poszło OK to powinniśmy być w stanie się zalogować: ========= Ubuntu 18.04 Netplan - konfiguracja interfejsów sieciowych ========= W Ubuntu 18.04 konfiguracja interfejsów sieciowych ulegla zmianie. Nie używamy już jak dawniej pliku /etc/network/interfaces Teraz do kofiguracji używa się /etc/netplan/ i plików z rozszerzeniem .yaml I tu zaczynają się schody W teorii konfiguracja jest banalna, w praktyce może nas czasem nerw złapać Pierwsze co trzeba umieć to sprawdzenie adresu ip: ip a Już widzimy, że zamiast prostych nazw interfejsów są jakieś takie dziwne. Jak sprawdzić jak nazywają się nasze karty sieciowe: lshw –c network i poszukać nazw: Teraz tak : Domyślny plik konfiguracyjny Netplan znajduje się w katalogu /etc/netplan. Możesz to sprawdzić za pomocą następującego polecenia: ls /etc/netplan/ W teorii powinien być tam plik 01-netcfg.yaml lub o podobnej nazwie a widzimy ze znajduje się plik 50-cloud-init.yaml - domyślnie w Ubuntu 18.04 instaluje się usługa cloud-init która zarządza wieloma rzeczami w tym sieciówkami - twórcy założyli że jak będziemy stawiać maszynę, to pewnie w chmurze typu Azure gdzie ta usługa ułatwi wstępną konfigurację - jeżeli odpalamy maszynę normalnie lokalnie, np. W Virtual Box, to może się okazać, mimo że zmienimy zawartość pliku yaml z konfiguracją sieciówki, to po restarcie usługa cloud-init i tak go sobie zmieni. Sam plik wygląda zasadniczo podobnie do typowego pliku z konfiguracją sieciówki z netplan Jak widać, mamy tutaj ustawioną jedną sieciówkę jako klienta dhcp. Pierwsze co musimy zrobić, to wyłączyć konfigurację sieci dla usługi cloud-init. Tworzymy nowy plik: sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg I wpisujemy do niego: network: {config: disabled} (oczywiście zapisujemy plik) Teraz zmieniamy nazwę pliku konfiguracji sieci na taką jak powinna być bez usługi cloud-init sudo mv /etc/netplan/50-cloud-init.yaml /etc/netplan/01-netcfg.yaml Możemy zrestartować maszynę poleceniem reboot. Musimy jeszcze zmienić delikatnie kolejność zmiennych w pliku. #################################UWAGA#################################### Netplan jest bardzo czuły na wcięcia - wszystkie wcięcia musimy robić przy pomocy spacji – jak zrobicie z rozpędu Tab to przy próbie uruchomienia configa wywali błąd. Ważna też jest kolejność zmiennych - też potrafi wywalić błąd. #################################UWAGA#################################### nasz plik yaml wygląda tak: A ma wyglądać tak: wszystkie wcięcia robimy spacją, muszą byc na określona głębokość Po zapisaniu configu żeby ustawić go na karcie sieciowej musimy użyć polecenia: sudo netplan apply Sprawdzamy jaki jest adres przy użyciu ip a KONFIGURACJA JEDNEJ SIECIÓWKI ZMOSTKOWANEJ pobierającej adres po DHCP z routera domowego 1.Ustawiamy w maszynie sieciówkę jako zmostkowaną 2. Włączamy maszynę 2.Edytujemy plik yaml z konfiguracją w katalogu /etc/netplan do postaci: Jak wyskakuje ostrzeżenie ze plik jest edytowany to po prostu potwierdzamy Wszystkie wcięcia robimy spacją!! Przy tabie wywali błąd. 3. Zapisujemy 4. Stosujemy zmiany przy użyciu netplan apply 5. Sprawdzamy czy adres został pobrany poprawnie przy użyciu ip a KONFIGURACJA JEDNEJ SIECIÓWKI ZMOSTKOWANEJ z adresem statycznym 1.Ustawiamy w maszynie sieciówkę jako zmostkowaną 2. Włączamy maszynę 2.Edytujemy plik yaml z konfiguracją w katalogu /etc/netplan do postaci: Jak wyskakuje ostrzeżenie ze plik jest edytowany to po prostu potwierdzamy Wszystkie wcięcia robimy spacją!! Przy tabie wywali błąd. 3. Zapisujemy 4. Stosujemy zmiany przy użyciu netplan apply 5. Sprawdzamy, czy adres ustawił się poprawnie przy użyciu ip a 6. Możemy sprawdzić pingiem czy mamy łączność ze światem: KONFIGURACJA DWÓCH SIECIÓWEK jednej ZMOSTKOWANEJ z adresem statycznym i drugiej WEWNETRZNEJ z adresem statycznym 1.Ustawiamy w maszynie sieciówkę jako zmostkowaną, drugą sieciówkę jako wewnetrzna o nazwie intnet 2. Włączamy maszynę 3. Sprawdzamy nazwę naszej drugiej sieciówki przy użyciu lshw –c network U mnie to enp0s8 (zero a nie duże o) 2.Edytujemy plik yaml z konfiguracją w katalogu /etc/netplan do postaci: Jak wyskakuje ostrzeżenie ze plik jest edytowany to po prostu potwierdzamy Wszystkie wcięcia robimy spacją!! Przy tabie wywali błąd. Jak gdzieś zabraknie jakiejś spacji też wywali błąd. 3. Zapisujemy 4. Stosujemy zmiany przy użyciu netplan apply 5. Sprawdzamy czy adres ustawił się poprawnie przy użyciu ip a 6.Możemy sprawdzić czy mamy łączność ze światem. 7. Uruchamiamy Windowsa XP z sieciówką wewnetrzna intent, ustawiamy mu adres 10.0.0.2 z maska 255.0.0.0 i sprawdzamy czy maszyny się widza na sieciówkach wewnętrznych: I z XP: ========= Ubuntu FTP ========= 1.Konfigurujemy karty sieciowe na maszynie z Ubuntu * pierwsza karta sieciowa – zmostkowana * druga karta sieciowa – wewnętrzna intnet jeżeli posiadamy, możemy przywrócić odpowiednią migawkę z kartami już skonfigurowanymi 2. Konfigurujemy karty sieciowe na maszynie testowej z WinXP/Win7: * pierwsza karta sieciowa - zmostkowana 3. Uruchamiamy maszynę z Ubuntu , sprawdzamy ustawienia adresów IP nano /etc/netplan/01-netcf.yaml ustawiamy na pierwszej sieciówce adres pasujący do adresacji w naszej sieci domowej, u mnie to: po ustawieniu odpowiednich adresów zatwierdzamy ustawienia za pomocą netplan apply i sprawdzamy za pomocą ip a, sprawdzamy tez za pomocą polecenia ping czy mamy łączność z internetem. 4. Aktualizujemy zawartość repozytoriów: sudo apt update 5. Instalujemy serwer FTP: apt install vsftpd jeżeli nie dało by się zainstalować bo wyskakuje taki błąd: Należy zrestartować Ubuntu przy użyciu polecenia: reboot lub shutdown -r now i ponowanie spróbować zainstalować 6. Konfiguracja serwera ftp znajduje się w pliku: /etc/vsftpd/conf Więc robimy kopie zapasową, w razie jakbyśmy coś namieszali: cp /etc/vsftpd.conf /etc/vsftpd.conf.bac 7.Konfiguracja dostępu autoryzowanego – wymagane będzie konto żeby się zalogować na serwerze Domyślnie serwer powinien od razu działać. Można się z nim spróbować połączyć. Utwórzmy testowe konto użytkownika stefan z hasłem 123qwe adduser stefan Po zalogowaniu się na serwer na nasze testowe konto stefan domyślnym katalogiem będzie jego katalog domowy: /home/stefan stwórzmy więc jakiś testowy plik, żeby było od razu widać, czy poprawnie się podłączyliśmy: touch /home/stefan/plik1.txt Zainstalujmy teraz klienta FTP - Filezilla: https://dl3.cdn.filezilla-project.org/client/FileZilla_3.51.0_win64- setup.exe?h=qjV41St8NdOGomVvgIO7eQ&x=1605228697 Możemy spróbować się podłączyć wpisując w odpowiednie miejsca adres IP serwera Ubuntu oraz login i hasło: Jak widać, połączyliśmy się i jesteśmy w katalogu domowym użytkownika () Domyślnie zapis na serwerze jest wyłączony więc przy próbie przesłania czegoś na serwer wyskoczy błąd (klikamy dwa razy w wybrany plik na lewym panelu, żeby go przesłać na serwer): Żeby włączyć zapis szukamy w configu poniżej zmiennej i zdejmijmy komentarz (usuńmy hash na początku linijki) Zapiszmy plik, zrestartujmy usługę: service vsftpd restart Lub systemctl restart vsftpd I sprawdźmy status serwera: service vsftpd status Jak widać serwer działa poprawnie możemy spróbować znowu przesłać plik: Plik udało się wgrać na serwer, możemy tez zerknąć z poziomu serwera czy faktycznie taki plik się pojawił: ls -l /home/stefan 7.Ustawianie banera powitalnego ustawiamy poniższą zmienną: Restartujemy serwer, spróbujmy połączyć się z cmd żeby zobaczyć nasz baner (w cmd wpisujemy ftp 192.168.1.200): 8.Blokada przechodzenia między katalogami: Po zalogowaniu każdy użytkownik może opuścić swój katalog domowy i przeglądać dowolne katalogi Jeżeli chcielibyśmy to zablokować to powinniśmy ustawić poniższe zmienne (później oczywscie restart serwera, żeby zmiany zaczęły działać): Jeżeli popatrzymy na środkowy panel, widzimy, że teraz nie ma opcji wyjścia z katalogu domowego: Jeżeli chcielibyśmy, żeby jednak wybrane konta miały możliwość przeglądania katalogow innych niż swój domowy użyjemy tej zmiennej: Musimy teraz stworzyć taki plik jak w zmiennej chroot_list_file i wpisać do niego konta użytkowników którzy mają mieć możliwość przeglądania katalogów: touch /etc/vsftpd.chroot_list wpiszę tam użytkownika zsme: echo zsme > /etc/vsftpd.chroot_list Restartujemy serwer i sprawdzamy czy działa: a teraz stefan: Wygodniej chyba było by testować to przy użyciu Total Commandera i zdefiniowaniu sobie polaczeń już od razu na odpowiednie konta: 9. Konfiguracja połączenia anonimowego Możemy chcieć, żeby była możliwość łączenia się z serweram bez konieczności logowania się. Ustawiamy zmienną: Domyślny katalog dla użytkowników anonimowych to /srv/ftp Utwórzmy tam 3 pliki: Połączmy się z serwerem anonimowo (jako login podajemy anonymous a hasło to adres email, w Filezilli możemy po prostu nie wpisywać ani loginu ani hasła): Możemy tez ustawić, żeby serwer nie pytał użytkowników anonimowych o hasło: Przetestujmy to przy użyciu cmd: Raczej logicznym działaniem jest, że domyślnie użytkownicy anonimowi nie mają prawa do zapisu. Jeżeli chcemy aby użytkownicy anonimowi mogli zapisywać pliku, powinniśmy ustawić zmienne: W opisach zmiennych widać, co dana zmienna oznacza. Dopiszmy jeszcze takie zmienne: ftp_username=stefan – ustawiamy jako kto będą zapisywać anonimowi użytkownicy, jak nie ustawimy tej zmiennej , to będzie to użytkownik o nazwie ftp anon_root=/home/ftp – katalog domyślny dla użytkowników anonimowych, jak nie ustawimy tej zmiennej, to będzie to katalog /srv/ftp W naszym przypadku ustawiłem, że użytkownicy anonimowi będą zapisywać jako konto stefan a katalog domyślny to /home/ftp Utwórzmy więc taki katalog i jakiś testowy plik, żeby było widać, czy działa poprawnie: Podłączmy się i spróbujmy coś zapisać: Przy próbie zapisu otrzymamy błąd, bo nie mamy uprawnień do zapisu w katalogu ftp: Musimy zrobić podkatalog w naszym katalogu /home/ftp mkdir /home/ftp/public i jako że ustawiliśmy że użytkownicy anonimowi zapisują z konta stefan, to np. zmienić mu właściciela na stefan: chown stefan /home/ftp/public Jak widać, stefan jako właściciel ma prawa zapisu, więc logując się na użytkownika anonimowego powinniśmy być w stanie zapisywać w utworzonym przez nas podkatalogu public. Zerknijmy czy faktycznie plik został utworzony z właścicielem stefan (tak ustawiliśmy w konfiguracji użytkowników anonimowych w naszym serwerze ftp): Oczywiście możemy też zamiast zmieniać właściciela zmienić prawa dostępu do katalogu /home/ftp/public: Ustawiłem z powrotem że właścicielem pliku jest root Teraz zmienię uprawnienia na 777 i tez powinniśmy mieć możliwość uploadu: I testujemy: Jak widać tez udało się przesłać pliki. Czego nie możemy zrobić ? Nie możemy tak po prostu ustawić praw zapisu dla całego katalogu domyślnego z którym łączą się użytkownicy anonimowi (w naszym przypadku to /home/ftp) Musimy stworzyć w nim podkatalog i dopiero w nim ustawiać prawa zapisu: W momencie gdy spróbujemy ustawić np. prawa 777 dla całego katalogu /home/ftp (przed zmianą jest 755): Zmieniamy prawa: Przy próbie połączenia się jako użytkownik zalogowany (użyje cmd z windowsa) otrzymuje komunikat: Ustawmy więc z powrotem prawa dostępu do /home/ftp na 755: sprawdźmy czy serwer nas wpuści: Zapisujemy zawsze w PODKATALOGU ! Nieważne, czy ustawimy te zmienne w konfigu naszego serwera ftp: ftp_username=stefan anon_root=/home/ftp (bez nich użytkownik anonimowy uploaduje pliki jako użytkownik o nazwie ftp a katalog domyślny z którym się łączy to /srv/ftp) TO ZAWSZE DO ZAPISU MUSISMY STWORZYC PODKATALOG I DOPIERO W NIM USTAWIC PRAWA ZAPISU czyli to sławne 777 czy też zmiana właściciela !!!!!!!!!! 10. Zaawansowane ustawienia serwera Jak ktoś chce się podoktoryzować, lub po prostu dowiedzieć się więcej na temat konfiguracji serwera vsftpd, to bardzo dobry opis po polsku zmiennych konfiguracyjnych jest tutaj: https://morfikov.github.io/post/konfiguracja-vsftpd-w-debianie/ Jak są jakieś literówki, to zgłaszajcie ========= Ubuntu SAMBA ========= 1.Przygotowanie maszyny wirtualnej z Ubuntu Server 18.04 * pierwsza karta sieciowa – zmostkowana * druga karta sieciowa – wewnętrzna intnet jeżeli posiadamy, możemy przywrócić odpowiednią migawkę z kartami już skonfigurowanymi 2. Uruchamiamy maszynę i sprawdzamy adres IP na zmostkowanej sieciówce nano /etc/netplan/01-netcf.yaml ustawiamy na pierwszej sieciówce adres pasujący do adresacji w naszej sieci domowej, u mnie to: po ustawieniu odpowiednich adresów zatwierdzamy ustawienia za pomocą netplan apply i sprawdzamy za pomocą ip a, sprawdzamy tez za pomocą polecenia ping czy mamy łączność z internetem. 3. Aktualizujemy zawartość repozytoriów: sudo apt update 4. Instalujemy serwer SAMBA: sudo apt install samba Folder gdzie serwer WWW będzie trzymał swoje pliki konfiguracyjne to: /etc/samba smb.conf – główny plik konfiguracyjny 5. Konfiguracja ustawień ogólnych w sekcji [global]: Interfejs na którym będzie działał serwer SAMBA Domyślnie serwer samby pracuje na wszystkich kartach sieciowych. Jeżeli chcielibyśmy by usługa nasłuchiwała na konkretnym interfejsie, w sekcji [global] jest od tego odpowiednia sekcja (zwróćcie uwagę, że zmienne służące do ustawienia tego są za komentowane – wszystko w pliku co się zaczyna od # albo od ; to komentarz): Sprawdźmy nazwę naszego interfejsu sieciowego (zmostkowanego, przez który mamy internet, bo jego będziemy używać do testów) ip a U mnie to interfejs o nazwie enp0s3, więc ustawiam odpowiednio zmienne w pliku konfiguracyjnym: Po zapisaniu pliku, oczywiście musimy zrestartować usługę – w tym przypadku mamy dwa procesy: service smbd restart service nmbd restart Ustawmy jeszcze nazwę serwera, grupę roboczą, oraz konto wykorzystywane do dostępu do udziałów bez autoryzacji: ntlm auth = true - zmienna dopisana, bo Win 10 ma problemy z podłączaniem się do Samby, to pomaga workgroup = WORKGROUP – nazwa grupy roboczej, dajemy taką jaką mamy w systemie, jeżeli chcemy się podłączać z Windows netbios name = Inazwisko – nazwa pod jaka wyświetli się nasz serwer , oczywiście w ćwiczeniu wpisujemy swoje dane guest account = inazwisko – jeżeli zrobimy udział dla gości bez logowania, to możemy zmienić domyślne konto, z którego będą zapisywać pliki na naszym serwerze – jeżeli nie ustawimy tej zmiennej to będzie to konto nobody (o tyle jest to istotne, ze trzeba później, robiąc przydział, pamiętać o uprawnieniach katalogu dla odpowiedniego konta, z którego będą zapisywać goście) w naszym ćwiczeniu użyjemy dla gości konta inazwisko (oczywiście wpiszcie swoje) wiec trzeba pamiętać, żeby stworzyć sobie takiego użytkownika: adduser inazwisko 5. Tworzenie udziałów anonimowych – bez logowania: Stwórzmy najpierw katalog który udostępnimy bez logowania: mkdir -p /home/samba/uczniowie teraz pamiętajmy o ustawieniu praw zapisu – w naszym przypadku możemy zrobić chown inazwisko /home/samba/uczniowie lub po prostu polecieć po łatwości i ustawić dla tego katalogu prawa 777 chmod 777 /home/samba/uczniowie Teraz odtwórzmy nasz plik z konfiguracją samby /etc/samba/smb.conf i na końcu pliku dodajmy taki wpis: Nazwa udziału to uczniowie, ścieżka która udostępniamy, to przygotowany przez nas wcześniej katalog, zmienne: guest ok = yes – dostęp bez konieczności autoryzacji hasłem browseable = yes – nasz udział będzie wyświetlał się na liście udziałów po połączeniu z serwerem, jeżeli tego nie ustawimy, to żeby dostać się do naszego udziału, będziemy musieli podać dokładną ścieżkę, czyli no.: //192.168.1.200/uczniowie writable = yes – nie trudno się domyślić, włączamy w naszym udziale możliwość zapisu Pamietajmy żeby po stworzeniu przydziału zrestartować serwer! 6. Tworzenie udziałów wymagających zalogowania: Stwórzmy najpierw katalog który udostępnimy dla użytkowników: mkdir -p /home/samba/dyrekcja teraz pamiętajmy o ustawieniu praw zapisu – w naszym przypadku będziemy udostępniać katalog użytkownikowi zsme, więc mogę go ustawić jako właściciela chown zsme /home/samba/dyrekcja lub po prostu polecieć po łatwości i ustawić dla tego katalogu prawa 777 chmod 777 /home/samba/dyrekcja wtedy nie ważne komu go udostępnimy, powinien mieć prawa zapisu: teraz otwórzmy plik konfiguracyjny samby i dodajmy na końcu nasz przydział: pojawiła nam się nowa zmienna: valid users = zsme – użytkownikiem uprawnionym dla tego udziału jest użytkownik zsme,jeżeli mamy więcej użytkowników, to oddzielamy ich nazwy przecinkiem W ramach ćwiczeń przygotujcie kolejny przydział: użytkownik : inazwisko wymaga logowania sciezka: /home/samba/inazwisko Pamietajmy żeby po stworzeniu przydziału zrestartować serwer! 6. Tworzenie udziałów dla grup użytkowników: Gdy mamy większa ilość osób którym byśmy chcieli przypisać dany udział, wygodniej będzie to zrobić dla grupy. Stwórzmy grupę nauczyciele: sudo groupadd nauczyciele stwórzmy konta użytkowników stefan i andrzej: adduser stefan adduser andrzej dodajmy do naszej grupy użytkowników : zsme, stefan, andrzej usermod -a -G nauczyciele zsme (oczywiście powtórzmy to dla wszystkich kont które chcemy dodać do grupy nauczyciele) Po wszystkim sprawdźmy, czy faktycznie konta które chcemy, są w odpowiedniej grupie nano /etc/group Stwórzmy katalog dla naszego udziału: mkdir -p /home/samba/nauczyciele nie zapomnijmy ustawić praw dostępu - ustawmy dla katalogu nauczyciele prawa 777 teraz otwórzmy plik konfiguracyjny samby i dodajmy na końcu nasz przydział dla grupy nauczyciele: Pamiętajmy żeby po stworzeniu przydziału zrestartować serwer! 7. Aktywwacja kont użytkowników w SAMBIE: Z zasobów mogą korzystać zalogowani użytkownicy (w przypadku konfiguracji security = user). Serwer samba wymaga utworzenie użytkowników zasobów (takich samych jak w systemie linux). Konto istniejącego użytkownika systemowego dodaje się do bazy użytkowników serwera samby za pomocą polecenia: smbpasswd. Czyli ustawienie hasła dla użytkownika zsme to: smbpasswd -a zsme Ustawmy hasła dla wszystkich naszych użytkowników. To samo polecenie służy do zmiany hasła użytkownika: 8. Testy działania: Utwórzmy w katalogach domowych naszych użytkowników jakieś testowe pliki : w katalogu domowym użytkownika zsme plik zsme.txt, w katalogu domowym użytkownika stefan plik stefan.txt i tak dalej. Sprawdźcie wszystkie utworzone przydziały czy działają poprawnie, czy wpuszczają odpowiednich użytkowników i czy pozwalają zapisywać !!!! Dostęp z cli Ubuntu: Instalujemy program smbclient sudo apt install smbclient podłączamy się do naszych udziałów w ten sposób: sudo smbclient //[IP_address or Host_name]/share_name –U username [adres_IP lub nazwa_hosta] to adres IP lub nazwa hosta serwera Samba [nazwa_udziału] to nazwa udziału w Sambie [nazwa użytkownika] to nazwa użytkownik uzyskujący dostęp do udziału Czyli np. podłączenie się do udziału dyrekcja przez użytkownika zsme to: smbclient //192.168.1.200/dyrekcja -U zsme przeglądanie zawartości katalogu to dir, wgrywanie coś do katalogu to put a ściąganie coś z katalogu to get Dostęp z Windowsa: Otwieramy dowolne okienko eksploratora i wpisujemy adres naszego przydziału w formacie: \\192.168.1.200\uczniowie możemy już kopiować pliki jak to w Windowsie. Dostęp z Ubuntu Desktop Najwygodniej korzysta się z udziałów w Sambie z Ubuntu desktopowego, ma on wbudowanego natywnego klienta: Otwieramy Pliki: Na dole okna po lewej stronie klikamy albo w sieć, albo w Połącz z serwerem: Ja kliknąłem w sieć i mogę przeglądać nasze udziały: Przy kliknięciu w Połącz z serwerem trzeba podać adres naszego serwera: Jak chcemy się „odpiąć” (wylogować) z udziału, to klikamy w tą mała strzałkę na liście udziałow po prawej: Skąd wziąć Ubuntu Desktop na testy, jak nie mamy maszyny wirtualnej ? Ściągnąć ISO, stworzyć nową maszynę w VB, podpiąć do niej ISO i nie instalować (choć polecam, przed egzaminem przyda się do powtórek) ale odpalić maszynę w trybie Live, bez instalacji: https://releases.ubuntu.com/18.04.5/ubuntu-18.04.5-desktop-amd64.iso ustawiam sieciowke na zmostkowaną Montuje iso z instalatorem Ubuntu do napędu, zaznaczam ze to LiveCD Wybieram, ze nie chce instalować, tylko wypróbować: System się uruchomił: Korzystam z Plików i łącze się z serwerem: Jak widać mam normalny dostęp do udziałów na naszym serwerze Samby: ========= Ubuntu Server - SSH ========= Serwer SSH 1. Na maszynie z US przywracamy czystą migawkę (może być ta z konfiguracji kart sieciowych), pierwszą sieciówkę konfigurujemy jako zmostkowaną, drugą jako wewnętrzną intnet (tak jak w poprzednim ćwiczeniu) 2. Przygotowujemy sobie jakąś drugą maszynę na testy (7,10, XP) sieciówka wewnetrzna intnet 3. Uruchamiamy Ubuntu, konfigurujemy kartę sieciową (tak aby adresacja pasowała do naszej sieci domowej) i końcówka adresu IP to był nasz numer z dziennika. Druga sieciówka to 192.168.X.1/24. U mnie niech to będzie: pierwsza sieciówka IP:10.39.100.X M:255.0.0.0 B:10.0.0.1 DNS:8.8.8.8 druga sieciówka: IP:192.168.X.1 M:255.255.255.0 cd /etc/netplan/ nano 01-netcf.yaml modyfikujemy ustawienia netplan apply 4. Uaktualniamy liste zawartości repozytoriów przed instalacją serwera SSH (od Ubuntu 16.04 w górę możemy używać apt update zamiast apt-get update, tak samo przy instalacji wystarczy apt install zamiast apt-get install) apt update 5. Instalujemy serwer ssh - użyjemy pakietu openssh-server apt install openssh-server (jak widzimy, polecenie apt install pokazuje nam pasek postępu instalacji) 6. Nasz serwer zaraz po instalacji powinien działać i pozwalać na podłączenie się na domyślnym 22 porcie. Możemy to sprawdzić przy pomocy polecania: service ssh status lub systemctl status ssh (żeby wyjść z polecenia używamy Ctrl + C) 7. Powinniśmy być się w stanie podłączyć na adres naszego serwera na domyślnym 22 porcie. Uruchamiamy Putty i zestawiamy połączenie: i po podłączeniu i zalogowaniu: 8. Konfiguracja naszego serwera SSH znajduje się w katalogu /etc/ssh w pliku sshd_config Przed zmianą konfiguracji zróbmy sobie oczywiście kopie pliku konfiguracyjnego, żeby w razie wtopy można go było łatwo przywrócić: cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bac otwieramy w edytorze plik konfiguracyjny nano /etc/ssh/sshd_config najczęściej będzie nasz interesowała opcja wybrania adresu na którym ma działać serwer oraz portu Możemy dopisać dodatkowe porty na których ma nasłuchiwać nasz serwer, zmienić domyślny port - całość polega na odkomentowaniu odpowiedniej linijki i ewentualnie dopisania żądanych ustawień - załóżmy, że chcemy, żeby oprócz domyślnego portu serwer działał tez na porcie 2222: oczywiście, żeby nasze zmiany miały skutek musimy zrestartować usługę poleceniem: service ssh restart lub systemctl restart ssh Serwer powinien pozwalać teraz na połączenia na porcie 22 i 2222 9. Przygotujmy sobie teraz maszynę testową - ja użyje Windowsa XP – najpierw uruchomię go z kartą sieciową zmostkowaną, żeby mieć internet, ściągnę Putty (32bity, bo to XP) Po ściągnięciu Putty, zmieniamy typ sieciówki na wewnętrzną i ustawiamy adresację na pasująca do drugiej karty sieciowej na naszym serwerze, czyli na przykład 10.0.0.100/8 10. Możemy ustawić na jakim adresie/adresach IP ma nasłuchiwać nasz serwer – domyślnie nasłuchuje na wszystkich (powinien Was wpuścić i z komputera gospodarza i z komputera testowego na obu ustawionych portach) – odkomentowanie odpowiedniej linijki i wpisanie adresu spowoduje, że serwer będzie nasłuchiwał tylko na jednym adresie: Oczywiście po zapisaniu restartujemy za każdym razem usługę ssh (service ssh restart) Teraz próbując zalogować się z komputera testowego na adres 10.0.0.1 serwer powinien odrzucić połączenie: 11. Możemy ręcznie dopisać drugi adres w konfiguracji – tutaj dodatkowo podałem port 3333 – przy takiej notacji serwer będzie zezwalał na łączenie się na tym adresie tylko na porcie 3333 pomijając te ustawione wyżej: Oczywiście po restarcie usługi ssh i próbie polaczenia się z komputera testowego na 10.0.0.1:22 serwer odrzuci polaczenie a na 10.0.0.1:3333 pozwoli się połączyć. 12. Blokada lub zezwalanie na dostęp użytkowników/grup Możemy też chcieć zablokować lub zezwalać na dostęp określonych użytkowników/grup Musimy wtedy w naszym configu użyć odpowiednich zmiennych (działają zgodnie z nazwami): DenyUsers user1 user2 user3 DenyGroups group1 group2 AllowUsers user1 user2 AllowGroups group1 group2 Załóżmy na serwerze testowe konto inazwisko z hasłem 123qwe oraz stefan z hasłem 123qwe adduser pporadzisz adduser stefan I teraz spróbujmy ustawić tak, że konta iznazwisko i zsme są wpuszczane na serwer konto stefan nie: restartujemy serwer SSH i sprawdzamy: Podobnie oczywiście będzie działało to z grupami. ========= Ubuntu serwer DNS ========= 1.Konfigurujemy karty sieciowe na maszynie z Ubuntu * pierwsza karta sieciowa – zmostkowana * druga karta sieciowa – wewnętrzna intnet jeżeli posiadamy, możemy przywrócić odpowiednią migawkę z kartami już skonfigurowanymi 2. Konfigurujemy karty sieciowe na maszynie testowej z WinXP: * pierwsza karta sieciowa - zmostkowana 3. Uruchamiamy maszynę z Ubuntu , sprawdzamy ustawienia adresów IP nano /etc/netplan/01-netcf.yaml ustawiamy na pierwszej sieciówce adres pasujący do adresacji w naszej sieci domowej, u mnie to: po ustawieniu odpowiednich adresów zatwierdzamy ustawienia za pomocą netplan apply i sprawdzamy za pomocą ip a, spradzamy tez za pomocą polecenia ping czy mamy łączoność z internetem. 4. Aktualizujemy zawartość repozytoriów: sudo apt update 5. Instalujemy serwer DNS: sudo apt install bind9 Folder gdzie serwer DNS będzie trzymał swoje pliki konfiguracyjne to: /etc/bind/ 6. Ustawiamy w pliku /etc/resolv.conf nasz adres IP jako adres serwera DNS: 7. Konfiguracja serwera DNS: Serwer DNS ma następujące pliki konfiguracyjne: Na początku trzeba zacząć od zrobienia kopii zapasowych tych plików: cp /etc/bind/named.conf /etc/bind/named.conf.bac cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bac cp /etc/bind/named.conf.local /etc/bind/named.conf.local.bac cp /etc/bind/named.conf.default.zones /etc/bind/named.conf.default.zones.bac Teraz możemy przystąpić do faktycznej konfiguracji: W pliku /etc/bind/named.conf.options określa się globalną konfigurację serwera DNS. ustawiamy tutaj na którym interfejsie ma działać nasz serwer DNS, adresy serwerów DNS do których będzie przekazywał zapytania których sam nie potrafi rozwiązać, czy też reguły ACL kto może się odpytywać naszego serwera DNS – ja ustawiłem że serwer ma działac na adresie 192.168.1.200 i ma się odpytywać serwer DNS googla, jeżeli czego nie będzie wiedział. Inna przykładowa konfiguracja (z kursu na moodle) z opisem parametrów – oczywiście jeżeli będziemy jej chcieli użyć to musimy dopasować do naszej adresacji: Sprawdzanie poprawności konfiguracji. Polecenie named-checkconf sprawdza plik konfiguracyjny serwera DNS bind9 (/etc/bind9/named.conf.options) i wyświetla ewentualne błędy. 8. Utworzenie lokalnych stref wyszukiwania Serwer DNS potrafi wyszukiwać do przodu – zamieniać nazwy domenowe na adresu IP oraz wyszukiwać wstecz – zamieniać IP na nazwy domenowe. Oczywiście, żeby potrafił to zrobić, musimy zdefiniować strefy wyszukiwania: nano /etc/bind/named.conf.local W naszym przypadku zdefiniujemy strefę wyszukiwania w przód dla domeny zsme.local, oraz strefę wyszukiwania wstecz dla adresów należących do sieci 192.168.1.0/24 W pliku named.conf.local definiowane są strefy lokalne: wyszukiwania w przód (ang. forward zone) i wstecz (ang. reverse zone). Serwer bind9 definiuje całe strefy (a nie domeny / nazwy domenowe) czyli grupy nazw domen, subdomen i hostów. Przykładowa konfiguracja stref z opisem parametrów (będziemy musieli ją przerobić tak żeby pasowała do naszej adresacji:) W naszym przypadku plik z definicją stref będzie wyglądał tak: Zwróćcie uwagę na sposób definiowania strefy wstecz – nasza przykładowa strefa wyszukiwania wstecz będzie pozwalała na wyszukiwanie rekordów dla adresów należących do sieci 192.168.1.0/24 – w definicji są wpisane pierwsze trzy oktety, więc dodając rekordy do strefy będziemy wpisywać tylko ostatni oktet adresu. Jeżeli na przykład chcielibyśmy zrobić strefę wyszukiwania wstecz dla adresów z sieci 10.0.0.0/8, to w definicja strfy wstecz wyglądała by następująco: zone "10.in-addr.arpa" { #typ strefy: master | slave type master; file "/etc/bind/db.10"; }; 9. Utworzenie plików z konfiguracja stref Musimy stworzyć pliki w których będziemy dodawać wpisy do stref, nazwy i ich położenie muszą być takie jak zdefiniowaliśmy dla poszczególnych stref w pliku named.conf.local. Żeby nie musieć tworzyć plików od zera, możemy skopiować pliki z przykładową konfiguracją stref które są już w katalogu /etc/bind. Plik konfiguracji strefy zsme.local stworzymy na podstawie db.local cp /etc/bind/db.local /etc/bind/db.zsme.local a plik konfiguracji dla strefy wyszukiwania wstecz stworzymy na podstawie pliku db.127 cp /etc/bind/db.127 /etc/bind/db.1.168.192 Teraz możemy przejść do konfiguracji poszczególnych opcji w plikach: Konfiguracja strefy wyszukiwania do przodu dla domeny zsme.local: zdefiniujemy wpisy dotyczące hostów: zsme.local ma pokazywać na adres 192.168.1.200 ns1.zsme.local ma pokazywać na adres 192.168.1.200 i jest też serwerem DNS (rekord typu NS) xp.zsme.local ma pokazywać na adres 1.150 – nasz testowy komputer z XP komp1.zsme.local ma pokazywać na to samo co xp.zsme.local – rekord typu CNAM (alias) router.zsme.local – ma pokazywać na adres naszego routera – 192.168.1.1 W plikach z definicjami stref mogą być stosowane znaki o specjalnym znaczeniu: Znak średnika ; oznacza komentarz jednolinijkowy Symbol @ - oznacza aktualnie definiowaną strefę (w tym przypadku zsme.local.) Kropka - na końcu nazwy rekordu oznacza koniec dołączania. Jeżeli jej nie będzie, serwer dołączy do niej nazwę strefy np.: abcd jest równoznaczne z: abcd.zsme.local. Konfiguracja strefy wyszukiwania wstecz dla sieci 192.168.1.0/24: Definiujemy rekordy typu PTR czyli wskaźniki (czyli dany adres IP pokazuje na podana nazwę), zwróćcie uwagę, ze podajemy tylko brakujący oktet (bo deklarując strefę w named.conf.locale deklarowaliśmy zone "1.168.192.in-addr.arpa" - jak widać, brakuje nam tylko jednego oktetu, stąd dodając rekordy wpisujemy tylko ten oktet – serwer sklei to w całość. tak jak wcześniej pisałem – jeżeli zadeklarowalibyśmy strefę wyszukiwania wstecz dla sieci 10.0.0/8: zone "10.in-addr.arpa" { #typ strefy: master | slave type master; file "/etc/bind/db.10"; }; dla takiej strefy dodając rekordy musielibyśmy podać 3 brakujące oktety, czyli przykładowy rekord: adres 10.0.0.100 pokazuje na nazwę pc1.zsme.local wyglądał by następująco: 100.0.0 IN PTR pc1.zsme.local. ; 10.0.0.100 Znaczenie poszczególnych parametrów: Reprezentacja czasu w usłudze bind9: 10. Restart usługi i testy Po skonfigurowaniu stref restartujemy nasz serwer DNS: service bind9 restart Możemy sprawdzić czy usługa (deamon) działa poprawnie używając polecenia: service bind9 status Ustawmy teraz żeby nasz Linux korzystał z właśnie przez nas skonfigurowanego serwera DNS. W tym celu musimy edytować plik /etc/resolv.conf i wpisać w nim adres naszego serwera DNS: nano /etc/resolv.conf Do testów użyjemy narzędzia nslookup – jest ono zarówno w Linuxie jak i w Windowsie. Jako że ustawiliśmy, żeby naszym DNS był nasz lokalny serwer DNS, to wystarczy wpisać poleceni nslookup a po uruchomieniu programu wpisać nazwę domenową, o która chcemy odpytać serwer DNS: Widzimy że serwerem który odpytujemy jest nasz komputer i zna naszą domenę zsme.local Zapytajmy się o nasze rekordy, które konfigurowaliśmy: Widzimy, że wszystkie rekordy które ustawiliśmy w strefie wyszukiwania do przodu działają poprawnie. Spróbujmy teraz wykonać zapytania wstecz, czyli wpisujemy adres IP a serwer powinien nam odpowiedzieć nazwą domenową: Serwer tez poprawnie odpowiada na zapytania. przetestujmy, czy serwet będzie potrafił przekazać zapytanie do forwardera (zdefiniowanego przez nas serwera DNS: 8.8.8.8) Jak widać, serwer odpytany o domenę, której przecież nie ma skonfigurowanej, przekazuje zapytanie do forwardera a ten je rozwiązuje i zwraca odpowiedź. Odpalmy teraz maszynę testową z XP, skonfigurujmy ja do pracy w tej samej sieci z pasująca adresacją: karta sieciowa: zmostkowana IP:192.168.1.150/24 B:192.168.1.1 DNS:192.168.1.200 (adres naszego Ubuntu Server z uruchomionym serwerem DNS) Użyjmy tez narzędzia nslookup i odpytajmy serwer o parę rekordów: Jak widać, działa poprawnie. Oczywiście możemy też po prostu puścić ping na nazwę domenową 11. NSLOOKUP – dodatek W momencie, gdy chcemy żeby nslookup nie odpytywał z domyślnego serwera DNS (tego który jest skonfigurowany w systemie) to pod systemem Windows, po uruchomieniu nslookup musimy wpisać polecenie: server 8.8.8.8 (serwer będzie odpytywał DNS googla zamiast naszego) W Linuxie musimy uruchomić nslookup z podaniem adresu serwera który ma odpytywać, zamiast domyślnego: nslookup – 8.8.8.8 Czyszczenie pamięci podręcznej serwera DNS: rndc flush Czyszczenie pamięci podręcznej DNS w Windows: ipconfig /flushdns ========= Ubuntu serwer WWW - Apache - hosty wirtualne ========= 1.Przygotowanie maszyny wirtualnej z Ubuntu Server 18.04 * pierwsza karta sieciowa – zmostkowana * druga karta sieciowa – wewnętrzna intnet jeżeli posiadamy, możemy przywrócić odpowiednią migawkę z kartami już skonfigurowanymi 2. Uruchamiamy maszynę i sprawdzamy adres IP na zmostkowanej sieciówce nano /etc/netplan/01-netcf.yaml ustawiamy na pierwszej sieciówce adres pasujący do adresacji w naszej sieci domowej, u mnie to: po ustawieniu odpowiednich adresów zatwierdzamy ustawienia za pomocą netplan apply i sprawdzamy za pomocą ip a, sprawdzamy tez za pomocą polecenia ping czy mamy łączność z internetem. 3. Aktualizujemy zawartość repozytoriów: sudo apt update 4. Instalujemy serwer WWW Apache 2: sudo apt install apache2 Folder gdzie serwer WWW będzie trzymał swoje pliki konfiguracyjne to: /etc/apache2 Dla nas najistotniejsze będą w tym ćwiczeniu: apache2.conf – główny plik konfiguracyjny ports.conf – konfiguracja portów na których działa apache sites-available i sites-enabled – konfiguracja hostów wirtualnych i katalog w którym możemy sprawdzić które z nich są włączone Apache jest najczęściej wykorzystywanym serwerem HTTP w sieci Internet. Na jego koncie jest ponad połowa wszystkich aktywnych stron internetowych, a jego atutami są moc i elastyczność. Apache rozdziela swoje funkcje i komponenty na osobne moduły, które można dostosowywać i konfigurować indywidualnie. Podstawowym modułem opisującym poszczególną stronę lub domenę jest virtual host. Wspomniane moduły pozwalają administratorowi na korzystanie z jednego serwera do obsługi wielu domen lub stron z jednego interfejsu lub IP wykorzystując odpowiedni mechanizm. Jest to bardzo istotne w sytuacji, jeżeli mamy zamiar obsługiwać wiele stron poprzez jeden serwer VPS. Każda konfigurowana domena przekierowuje użytkowników do specjalnego katalogu mieszczącego informacje o stronie, nie informując o tym, że ten sam serwer odpowiada też za inne strony. Domyślnie po zainstalowaniu serwera możemy w przeglądarce odpalić stronę domyślną wpisując adres IP serwera: Główny katalog dla stron WWW to: /var/www/ Katalog w którym przechowywane sa pliki tej strony to: /var/www/html Spróbujmy zmodyfikować naszą domyślną stronę: nano /var/www/html/index.html Ja zmieniłem napis u góry: Wy oczywiście wpiszcie swoje Imię i Nazwisko. 5. Hosty wirtualne. Żeby serwer mógł obsłużyć kilka osobnych witryn, musimy stworzyć i skonfigurować odpowiednie hosty wirtualne. Żeby móc obsłużyć różne hosty wirtualne (czyli więcej niż jedną stronę) muszą się one różnić jedną z poniższych cech: - muszą działać na różnych portach - muszą działać na innym adresie IP - musza mieć inną nazwę domenową Konfiguracja hostów wirtualnych jest przechowywana w: /etc/apache2/sites-available Domyślnie mamy jednego hosta wirtualnego – stronę domyślną, plik z jej konfiguracją to /etc/apache2/sites-available/000-default.conf Jak widzimy w configu – strona działa na wszystkich adresach ustawionych na naszym serwerze Ubuntu, na porcie 80 (punkt 1), mail do osoby zarządzającej stroną to webmaster@localhost a ścieżka z plikami strony to /var/www/html (punkt 2) Cały proces tworzenia kolejnych hostów wirtualnych będzie wyglądał tak: 1. Tworzymy plik z konfiguracją hosta w katalogu /etc/apache2/sites-available 2. Ustawiamy w configu adres IP, domene, port na którym ma działać masz host oraz oczywiście ścieżkę do katalogu w którym będą trzymane pliki strony 3. Tworzymy katalog w którym będzie przechowywana nasza strona – taki sam, jak ustawiliśmy w configu 4. Włączamy naszego hosta poleceniem a2ensite plikzconfigkiem.conf 3.1 Host wirtualny na innym porcie niż 80 a) kopiujemy config strony domyślnej, zapiszmy go pod nazwą port_test.conf cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/port_test.conf b) modyfikujemy plik konfiguracyjny – zmieniamy port i ścieżkę do katalogu strony port – 8080 sciezka – /var/www/port_test/html c) tworzymy katalog dla naszej strony tak jak w pliku konfiguracyjnym, potem tworzymy w nim plik index.html: mkdir -p /var/www/port_test/html nano /var/www/port_test/html/index.html d) musimy w ustawieniach Apacha dodać port na którym ma działać nasz host wirtualny – 8080 nano /etc/apache2/ports.conf e) włączamy naszego hosta poleceniem a2ensite i podajemy nazwe pliku w którym jest konfiguracja naszego hosta: a2ensite port_test.conf f) restartujemy usługę Apache i testujemy działanie naszej strony w przeglądarce: service apache2 restart strona działa poprawnie – w ten oto sposób stworzyliśmy samodzielnie naszego pierwszego hosta wirtualnego na Apachu 3.2 Host wirtualny na innym adresie IP (wtedy port może zostać 80) a) kopiujemy configa z naszego poprzedniego hosta i zapisujemy go pod nazwą ip_test.conf cp /etc/apache2/sites-available/port_test.conf /etc/apache2/sites-available/ip_test.conf b) modyfikujemy go: IP – 192.168.1.222 (oczywiście ustawcie jakies z Waszej puli adresów) port – 80 katalog /var/www/ip_test/html c) tworzymy katalog dla strony, kopiujemy i przerabiamy index.html z poprzedniego hosta: mkdir -p /var/www/ip_test/html cp /var/www/port_test/html/index.html /var/www/ip_test/html/index.html nano /var/www/ip_test/html/index.html d) jako ze witryna ma działać na innym adresie IP musimy ustawić drugi adres IP dla naszej skarty sieciowej: nano /etc/netplan/01-netcf.yaml Zatwierdzany oczywiście przy użyciu netplan apply e) aktywujemy nasza stronę poleceniem a2ensite ip_test.conf i restartujemy Apache f) sprawdzamy czy nasz host wirtualny działa poprawnie: 3.3 Host wirtualny działający po nazwie domenowej Dodamy teraz dwa hosty działające po nazwie domenowej: zsme.local oraz inazwisko.local (oczywiście Wy wpiszcie pierwsza literę imienia i swoje nazwisko) a) kopiujemy config strony domyślnej, zapiszmy go pod nazwą zsme.local.conf oraz inazawisko.local.conf cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/zsme.local.conf cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/inazwisko.local.conf b) zmieniamy configi: zsme.local.conf: IP dowolne, port 80 ServerAdmin admin@zsme.local ServerName zsme.local ServerAlias www. zsme.local DocumentRoot /var/www/zsme.local/html inazwisko.local.conf IP dowolne, port 80 ServerAdmin admin@inazwisko.local ServerName inazwisko.local ServerAlias www.inazwisko.local DocumentRoot /var/www/inazwisko.local/html c) tworzymy katalogi dla naszych hostów, kopiujemy z poprzednich hostów index.html mkdir -p /var/www/zsme.local/html mkdir -p /var/www/inazwisko.local/html cp /var/www/port_test/html/index.html /var/www/zsme.local/html/index.html cp /var/www/port_test/html/index.html /var/www/inazwisko.local/html/index.html Modyfikujemy ich zawartość: oraz: c) włączamy nasze strony i restartujemy Apache: a2ensite zsme.local.conf a2ensite inazwisko.local.conf service apache2 restart d) żeby nasz komputer – gospodarz - z którego testujemy działanie stron umiał się połączyć z naszymi stronami zsme.local i inazwisko.local, musi potrafić zamienić te nazwy domenowe na adres IP serwera obsługującego nasze hosty wirtualne. Potrzebujemy albo serwera DNS ze skonfigurowanymi strefami z tymi domenami – co jest dosyć pracochłonne. Żeby nie męczyć się z tym, użyjemy pliku hosts Plik host w Windows znajduje się w katalogu: C:\Windows\system32\drivers\etc\ Musimy go edytować z uprawnieniami administratora o inaczej nie pozwoli się zapisać po modyfikacji (najlepiej użyć np. Notepad++) Dodamy do niego dwa rekordy łączące nazwy domenowe naszych stron z adresem IP naszego serwera na którym pracuje Apache obsługujący te strony. e) sprawdzamy czy nasz host wirtualny działa poprawnie: i drugi: Uwagi: Jeżeli chcielibyśmy, żeby właścicielem strony był ktoś inny niż root (czyli żeby mógł wrzucać pliki do katalogu strony), musimy oczywiście zmienić właściciela katalogu z daną stroną oraz ustawić mu prawa dostępu do niego, np. ustawię, że właścicielem witryny zsme.local będzie użytkownik stefan (należy sobie utworzyć takie konto): a) zmieniam właściciela katalogu z witryną na stefana oraz ustawiam 775 dla całego katalogu /var/www, żeby mieć pewność, że będzie możliwość odczytu sudo chown -R stefan:stefan /var/www/zsme.local/html sudo chmod -R 755 /var/www b) przelogowuję się na konto stefana i sprawdzam czy może coś wrzucić do katalogu ze stroną Jak widać, stefan może zapisywać w katalogu domowym strony zsme.local