# Kwestie związane z bezpieczeństwem w &kppp;

Ta część dokumentacji przeznaczona jest dla Administratorów systemu (użytkownika `root`), osób o wysokich wymaganiach dotyczących bezpieczeństwa, lub osób zainteresowanych technicznymi kwestiami funkcjonowania systemu. Nie jest konieczne czytanie tego tekstu, jeżeli wykorzystujesz Linuksa w domu dla swoich potrzeb, jednak zawsze możesz nauczyć się czegoś interesującego.

## Ograniczanie dostępu do &kppp;

Administrator systemu może decydować kto może wykorzystywać &kppp;Istnieją dwie możliwości realizacji tego zadania.

### Ograniczanie dostępu z wykorzystaniem grupowych praw dostępu

Utwórz nową grupę (możesz ją nazwać na przykład `dialout`) i przypisz do niej wszystkich użytkowników, którzy będą mogli korzystać z &kppp;, a nasŧępnie wpisz następującego polecenia:

    # chown root.dialout /opt/kde/bin/kppp
    # chmod 4750 /opt/kde/bin/kppp

W powyższym przykładzie, zakłada się iż &kde; zainstalowano w katalogu `/opt/kde/` oraz, że nowo utworzona grupa nosi nazwę `dialout`.

### Ograniczanie dostępu z wykorzystaniem mechanizmów &kppp;

Zanim program &kppp; wykona cokolwiek, najpierw sprawdza on istnienie pliku `/etc/kppp.allow`. Zawiera on listę wszystkich użytkowników, którzy mogą skorzystać z programu &kppp;. Plik ten powinien posiadać ustawione prawo odczytu dla każdego użytkownika (ale oczywiście BEZ prawa zapisu). Program &kppp; rozpoznaje jedynie nazwy (loginy) użytkowników, tak więc nie możesz wykorzystywać numerów UID użytkownika. Poniżej przedstawiono krótki przykład:

    # /etc/kppp.allow
    # komentarze oraz linie puste są ignorowane

    krzys
    antek
    monika

W powyższym przykładzie, jedynie użytkownicy: `krzys`, `antek` oraz `marta` mogą wykorzystać program &kppp; i zadzwonić do dostawcy internetowego. Poza wymienionymi w pliku loginami, pełne możliwości programu może wykorzystywać użytkownik o numerze UID równym 0 (co oznacza, że nie musisz wpisywać tutaj użytkownika: root)

## Program &kppp; ma ustawiony znacznik SUID ? Czy nie wpływa to negatywnie na bezpieczeństwo?

Jest praktycznie niemożliwe napisanie programu, który ma dostęp do sprzętu (modemu), bez zastosowania znacznika SUID w sposób jednocześnie bezpieczny i łatwy dla niedoświadczonego użytkownika. Program &kppp; radzi sobie z tym problemem w sposób następujący:

- Natychmiast po uruchomieniu program &kppp; rozdziela się (fork) na osobne procesy..

- Proces główny, obsługujący interfejs użytkownika (GUI), pozbywa się znacznika SUID i działa dalej na prawach zwykłego użytkownika.

- Proces pomocniczy utrzymuje podwyższone uprawnienia, gdyż jest on odpowiedzialny za wszystkie działania wymagające uprawnień Administratora. Aby jego działanie było bezpieczne, to ta część programu nie wykorzystuje żadnych funkcji środowiska &kde; lub bibliotek &Qt;. Kod źródłowy procesu pomocniczego jest krótki (około 500 linii) oraz dobrze udokumentowany, tak aby możliwe było szybkie wykrycie wszelkich luk i zagrożeń dla bezpieczeństwa.

- Procesy główny oraz pomocniczy komunikują się ze sobą z wykorzystaniem standardowego mechanizmu IPC. systemu &UNIX;

Specjalne podziękowania należą się Harri'emu Portenowi za napisanie tego wspaniałego programu. Wszyscy myśleli, że jest to niemożliwe, ale jemu udało się to w ciągu tygodnia.