• Nie Znaleziono Wyników

Programowanie aplikacji klient-serwer Studia zaoczne, 2006/2007 Laboratorium 3.

N/A
N/A
Protected

Academic year: 2021

Share "Programowanie aplikacji klient-serwer Studia zaoczne, 2006/2007 Laboratorium 3."

Copied!
1
0
0

Pełen tekst

(1)

Programowanie aplikacji klient-serwer Studia zaoczne, 2006/2007 Laboratorium 3.

Pobierz plik lab3.tar.gz i rozpakuj go.

1. Zamiana nazwy domenowej na adres IP

a) Zbudować program, który poda wszystkie nazwy domenowe dla zadanego adresu IP b) Zbudować program, który poda wszystkie adresy IP dla zadanej nazwy domenowej

Sprawdzić obydwa programy na następujących adresach: naprawa.wsisiz.edu.pl, ftp.wsisiz.edu.pl, 213.135.44.36.

2. Zapoznaj się z programem klient.c i serwer.c. Jest to prosty serwer iteracyjny, którego zadaniem jest pobranie tekstu od klienta i zwrócenie go (podobnie do protokołu echo). Zmodyfikuj program klient.c tak, aby można było posługiwać się adresem IP lub nazwą serwera, numerem portu lub nazwą usługi. Zmodyfikuj program serwer.c tak, aby można było posługiwać się numerem portu lub nazwą usługi.

3. Uzupełnij aplikację serwerPliki z pliku lab3.tar.gz. Służy ona do pobierania plików z serwera. Klient przesyła do serwera nazwę pliku, który chce pobrać. Serwer czyta nazwę pliku, odnajduje go na dysku i przesyła do klienta. Serwer ma działać jako demon. Dla uproszczenia załóż, że plik do wysłania znajduje się w katalogu bieżącym serwera, serwer nie sprawdza praw dostępu. Klient odbiera plik i albo wyświetla go na ekranie (jeśli pominięta zostanie nazwa docelowa) albo zapisuje na dysku. Proponowane wywołanie klienta:

klientPliki <serwer_IP> <port> <nazwa_pliku_źródłowego> [<nazwa_docelowa_pliku>]

Problemy do rozwiązania: Jak serwer może rozpoznać, że otrzymał pełną nazwę pliku? Jak klient może stwierdzić, że otrzymał już cały plik?

Zadanie domowe

4. Nazwa pliku

Uwzględnij w programie z zadania 3 możliwość podawania samej nazwy pliku lub nazwy pliku poprzedzonej ścieżką. Jeśli nazwa przesłana przez klienta jest katalogiem wyślij wykaz plików w tym katalogu.

5. Sprawdzanie dostępu do plików

Zmodyfikuj program z poprzedniego zadania tak, aby pliki lub katalog był przesyłany tylko wtedy, kiedy będą zapewnione odpowiednie prawa (r dla pliku, rx dla katalogu w kategorii inni).

6. Zmniejszanie uprawnień serwera - ograniczenie systemu plików.

Zmodyfikuj program z poprzedniego zadania, tak aby działał on w ograniczonym systemie plików. Wykorzystaj funkcję chroot() do przedefiniowania katalogu głównego programu. O czym musisz pamiętać dokonując tej zmiany?

7. Zmniejszanie uprawnień serwera - przypisanie do specjalnego użytkownika.

Utwórz specjalny wpis w /etc/passwd dla użytkownika – właściciela serwera. Zmodyfikuj serwer plików tak, aby proces rozpoczynał wykonywanie z uprawnieniami root’a. Następnie, po przejściu w tryb demona zmniejsz uprawnienia procesu poprzez przypisanie mu nowego właściciela. Potrzebna funkcja:

#include <sys/types.h>

#include <unistd.h>

int setuid(uid_t uid);

Sprawdź działanie tego serwera.

a) uruchom go z konta root’a

b) uruchom go ze swojego konta (innego niż użytkownik specjalny).

Czy działanie w obydwu przypadkach będzie takie samo?

8. Obsługa błędów

Serwer plików w przypadku niemożności przesłania pliku odsyła do klienta komunikat informujący go

o przyczynie.

Cytaty

Powiązane dokumenty

Zastosowano metodę ekstrakcji w fazie stałej (Solid Phase Extraction, SPE) do izolacji z moczu opiatów i metadonu oraz metodę wysokosprawnej chro- matografii

Poprawa przedmiotu może się odbyć w sesji poprawkowej i obejmuje sprawdzian zaliczający wykład oraz zadania domowe wskazane przez prowadzącego ćwiczenia.. Punkty naliczane są

Opracuj klienta standardowej usługi time w wersji TCP (opis usługi time jest zawarty w RFC 868 - www.rfc- editor.org).. Niech korzysta on z serwera time uruchomionego za

a) wersja 1: serwer wieloprocesowy (jeden proces obsługuje jednego klienta), b) wersja 2: serwer wielowątkowy (jeden wątek obsługuje jednego klienta). c) wersja 3:

b) wersja 2: serwer wyprzedzająco wieloprocesowy (tworzona jest pula procesów, które są następnie przydzielane do klientów, jeden proces obsługuje jednego klienta). c) wersja

ad a) Uruchom serwera i klienta. Wpisz jeden wiersz tekstu. Po otrzymaniu odpowiedzi z serwera, usuń proces serwera. Czy w procesie klienta coś się dzieje? Jaki jest stan

gdzie root_key.pem będzie zawierać klucz prywatny zaś root_request.pem żądanie certyfikatu. b) Wygeneruj certyfikat główny:. $ openssl x509 –req –in root_request.pem

Argumenty -f oraz -t pozwalają nam określić ile procesów potomnych oraz wątków ma utworzyć serwer. Przy czym jeśli określimy, że ma być uruchomionych N potomków, to serwer