<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>