<chapter id="howitworks">
<title
>Jak to działa?</title>

<sect1 id="howitworks-overview">
<title
>Wstęp</title>

<para
>Zasada działania PolicyKit jest prosta, ale wymaga zmian w programach, które mają go wykorzystywać do zapytań o hasło.</para>
</sect1>

<sect1 id="howitworks-problem">
<title
>Problem</title>

<para
>W programach graficznych, najczęściej wykorzystywanym sposobem uzyskania uprawnień administratora jest wywołanie programu z poziomu użytkownika root, co jednak rodzi wiele zagrożeń bezpieczeństwa i nie pozwala na wybiórcze mapowanie uprawnień do działań. Nie ma możliwości oddzielenia uprawnień do instalacji pakietu od uprawnienia do podniesienia wersji systemu. W każdym przypadku, konieczne jest podanie hasła administratora. Drugim sposobem jest skorzystanie z komendy sudo, jednak po takim uruchomieniu programu, użytkownik ma pełne uprawnienia administratora.Jeżeli taka aplikacja wyświetla okno wyboru plików, działanie w trybie użytkownika root pozwala na usunięcie dowolnego pliku w systemie, a nawet na oglądanie i kopiowanie plików innych użytkowników. </para>
</sect1>

<sect1 id="howitworks-solution">
<title
>Rozwiązanie</title>

<para
>Program PolicyKit rozwiązuje ten problem. Programista aplikacji musi wydzielić kod uprzywilejowany do oddzielnego programu, często nazywanego programem pomocniczym (bez interfejsu graficznego), oraz zdefiniować działania wymagające autoryzacji w pliku <quote
>.policy</quote
>. PolicyKit wczytuje ten plik i może autoryzować programy do wykonywania tych działań. Wykorzystanie interfejsu &DBus; do aktywacji aplikacji jest najlepszym jeśli nie jedynym sposobem uruchamiania aplikacji pomocniczych wymagających uprawnień administratora.</para>

<para
>W tym rozwiązaniu aplikacja graficzna wywołuje działanie programu pomocniczego za pomocą interfejsu &DBus;, co uruchamia go z uprawnieniami administratora. W wywołaniu przekazywane są informacje o tym jakie działanie ma zostać wykonane i jaka aplikacja go wywołała. Program pomocniczy następnie wywołuje agenta PolicyKit aby potwierdzić autoryzację do wykonania danego działanie przez daną aplikację, agent PolicyKit zwraca informację do programu pomocniczego o potwierdzeniu autoryzacji do wykonania danego działania.W przypadku gdy program pomocniczy otrzyma informację że aplikacja nie posiada odpowiedniej autoryzacji, PolicyKit wyświetli okno z prośbą o autoryzację do wykonania działania.</para>

<para
>Jeżeli PolicyKit otrzyma żądanie autoryzacji, uruchamia dostępnego agenta, którym może być &policykit-kde;. Po pozytywnej autoryzacji aplikacja graficzna musi ponownie wywołać program pomocniczy aby wykonać działanie.</para>
</sect1>

</chapter>
