<chapter id="security"> <title >Kwestie związane z bezpieczeństwem w &kppp;</title> <para >Ta część dokumentacji przeznaczona jest dla Administratorów systemu (użytkownika <systemitem >root</systemitem >), 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.</para> <sect1 id="security-restricting-access"> <title >Ograniczanie dostępu do &kppp; </title> <para >Administrator systemu może decydować kto może wykorzystywać &kppp;Istnieją dwie możliwości realizacji tego zadania.</para> <sect2 id="security-group-permissions"> <title >Ograniczanie dostępu z wykorzystaniem grupowych praw dostępu</title> <para >Utwórz nową grupę (możesz ją nazwać na przykład <systemitem >dialout</systemitem >) i przypisz do niej wszystkich użytkowników, którzy będą mogli korzystać z &kppp;, a nasŧępnie wpisz następującego polecenia:</para> <screen ><prompt >#</prompt > <userinput ><command >chown</command > <option >root.dialout</option > <filename >/opt/kde/bin/kppp</filename ></userinput> <prompt >#</prompt > <userinput ><command >chmod</command > <option >4750</option > <filename >/opt/kde/bin/kppp</filename ></userinput > </screen> <para >W powyższym przykładzie, zakłada się iż &kde; zainstalowano w katalogu <filename class="directory" > /opt/kde/</filename > oraz, że nowo utworzona grupa nosi nazwę <systemitem >dialout</systemitem >.</para> </sect2> <sect2 id="security-kppps-way"> <title >Ograniczanie dostępu z wykorzystaniem mechanizmów &kppp;</title> <para >Zanim program &kppp; wykona cokolwiek, najpierw sprawdza on istnienie pliku <filename >/etc/kppp.allow</filename >. 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 <emphasis >BEZ</emphasis > prawa zapisu). Program &kppp; rozpoznaje jedynie nazwy (loginy) użytkowników, tak więc nie możesz wykorzystywać numerów <acronym >UID</acronym > użytkownika. Poniżej przedstawiono krótki przykład:</para> <screen ># /etc/kppp.allow # komentarze oraz linie puste są ignorowane krzys antek monika </screen> <para >W powyższym przykładzie, jedynie użytkownicy: <systemitem >krzys</systemitem >, <systemitem >antek</systemitem > oraz <systemitem >marta</systemitem > 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 <acronym >UID</acronym > równym 0 (co oznacza, że nie musisz wpisywać tutaj użytkownika: root)</para> </sect2> </sect1> <sect1 id="security-why-suid"> <title >Program &kppp; ma ustawiony znacznik <acronym >SUID</acronym > ? Czy nie wpływa to negatywnie na bezpieczeństwo?</title> <para >Jest praktycznie niemożliwe napisanie programu, który ma dostęp do sprzętu (modemu), bez zastosowania znacznika <acronym >SUID</acronym > 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:</para> <itemizedlist> <listitem> <para >Natychmiast po uruchomieniu program &kppp; rozdziela się (fork) na osobne procesy..</para> </listitem> <listitem> <para >Proces główny, obsługujący interfejs użytkownika (<acronym >GUI</acronym >), pozbywa się znacznika <acronym >SUID</acronym > i działa dalej na prawach zwykłego użytkownika.</para> </listitem> <listitem> <para >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.</para> </listitem> <listitem> <para >Procesy główny oraz pomocniczy komunikują się ze sobą z wykorzystaniem standardowego mechanizmu <acronym >IPC</acronym >. systemu &UNIX; </para> </listitem> </itemizedlist> <para >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.</para> </sect1> </chapter>