• Nie Znaleziono Wyników

Programowanie aplikacji klient-serwer Studia zaoczne, 2006/2007

N/A
N/A
Protected

Academic year: 2021

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

Copied!
1
0
0

Pełen tekst

(1)

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

Pobierz plik lab6.tar.gz i rozpakuj go..

Laboratorium zakłada posiadanie prostego serwera iteracyjnego WWW. Serwer ten ma wykonywać następujące zadania:

- jeśli przesłana nazwa jest katalogiem, przesłać do klienta zawartość tego katalogu - jeśli przesłana nazwa jest plikiem zwykłym, przesłać do klienta zawartość tego pliku - jeśli żadną z powyższych, odesłać komunikat o błędzie

Wykorzystaj uproszczony serwer HTTP z pliku lab6.tar.gz lub opracowany przez siebie serwer z zadania domowego z laboratorium 4.

Uproszczony protokół implementowany przez serwer:

Klient:

GET nazwa_pliku HTTP/1.0 <CRLF>

opcjonalne argumenty <CRLF>

<CRLF>

Serwer:

HTTP/1.0 kod-statusu komunikat dodatkowe argumenty

<CRLF>

przesłana zawartość

Serwer implementuje tylko metodę GET. Uwzględnij następujące kody odpowiedzi:

HTTP/1.0 200 OK <CRLF>

HTTP/1.0 404 Not found <CRLF>

HTTP/1.0 501 Not implemented <CRLF>

1. Zmodyfikuj program serwera tak, aby można było obsługiwać współbieżnie klientów:

a) wersja 1: serwer wieloprocesowy (jeden proces obsługuje jednego klienta)

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 3: serwer wielowątkowy (jeden wątek obsługuje jednego klienta)

d) wersja 4: serwer wyprzedzająco wielowątkowy (tworzona jest pula wątków, które są następnie przydzielane do klientów, jeden wątek obsługuje jednego klienta)

e) wersja 5: serwer multipleksacyjny (funkcja select, serwer przełącza się miedzy klientami) 2. Zmniejszanie uprawnień serwera: ograniczenie systemu plików

Wykorzystaj funkcję chroot() do przedefiniowania katalogu głównego programu. O czym musisz pamiętać dokonujące tej zmiany?

3. Zmniejszanie uprawnień serwera: przypisanie do specjalnego użytkownika.

Utwórz specjalny wpis w /etc/passwd dla użytkownika – właściciela serwera. Zmodyfikuj serwer z zadania 1 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?

Cytaty

Powiązane dokumenty

C-572/17 i podaj datę tego wyroku, strony postępowania (przeciwko komu toczyła się sprawa) oraz rozstrzygnięcie.. (4 pkt) Znajdź w Internetowej Bazie Traktatowej MSZ,

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

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

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:

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