Czy istnieje gksudo neutralny dla komputerów?

17

Istnieją różne narzędzia dla różnych komputerów stacjonarnych, których celem jest uruchomienie aplikacji graficznej jako root. gksudo, kdesudo, empower, Itd ...

Ale co, jeśli piszę skrypt, którego można by użyć na dowolnym komputerze z systemem Linux? Czy istnieje xdg-sudojakiś rodzaj ..? Standard uzyskiwania dostępu do sudo w środowisku komputerowym?

Oli
źródło

Odpowiedzi:

16

Podążając za sugestią @Tachyons, przeprowadziłem wiele badań na ten temat pkexeci jest niesamowity !

  • Jest częścią powszechnie używanego pakietu PolicyKit .
  • Prowadzony i sponsorowany przez freedesktop.org
  • Domyślnie w Gnome , Unity , MATE , Cinnamon , KDE , LXDE i XFCE i ewentualnie innych
  • Działa przez D-Bus, więc jest całkowicie neutralny dla komputera, z dobrze zdefiniowanym protokołem.
  • W wielu DE jest używany w wielu usługach, takich jak ekran logowania, zamykanie / restart, zarządzanie dyskami (udisks / automount) i tak dalej.

Tak, spełnia wszystkie wymagania i myślę, że to najbliższa rzecz, jaką może być „uniwersalny gksudo” .

To powiedziawszy, pkexecjest front-end wiersza poleceń PolicyKit. Istnieją 2 podstawowe tryby działania:

  • Po prostu uruchom go tak, jak byś to zrobił sudo, a otrzymasz ładny monit GUI:

    $ pkexec rm -rf /

monit GUI pkexec

  • Lub utwórz plik autoryzacji PolicyKit dla swojej aplikacji, upuść go /usr/share/polkit-1/rules.d, a pozwoli on na wiele dostosowań i opcji związanych z bezpieczeństwem, na przykład dostęp do konta root tylko dla niektórych działań, brak potrzeby hasła dla innych, dostęp ograniczony do niektórych ścieżek itp. Możesz dostosowywać ustawienia z niesamowitą szczegółowością.
MestreLion
źródło
6

Bardziej ogólnym sposobem byłoby napisanie „programu pomocniczego”. Taki program prosi użytkownika o podanie hasła; jeśli masz pewność, że, powiedzmy, Zenity, jest zainstalowany, możesz go użyć, w przeciwnym razie będziesz musiał napisać program pomocniczy w Pythonie lub coś innego, co może współdziałać z GUI.

Przeczytaj sudoinstrukcję dotyczącą opcji -A(„askpass”) i -S(stdin).

I pamiętaj, że kiedy uruchamiasz sudoskrypt, potrzebujesz opcji -H(domowej) do symulacji gksudo.

Ta metoda działa dobrze, ale musisz dokładnie przetestować program pomocniczy, aby upewnić się, że jest wolny od błędów.

Paddy Landau
źródło
1
Musisz także obsługiwać przekazywanie tokenów xauth w swoim programie - co nie jest trywialne.
symcbean
4

Nie, nie ma żadnego standardowego sposobu uzyskiwania uprawnień roota (ani żadnego innego użytkownika).

Jeśli chcesz być kompatybilny z jak największą liczbą systemów, nie zakładaj żadnego sposobu, ale powiedz użytkownikowi, że musi on uruchomić skrypt jako określony użytkownik. Następnie użytkownik / administrator musi skonfigurować system, aby skrypt działał poprawnie.

Przydałaby się sugestia, jak korzystać z najpopularniejszych systemów uwierzytelniania, takich jak su, sudo i ConsoleKit.

Florian Diesch
źródło
To prawda na początku 2009 roku, ale na szczęście teraz polkit(dawniej PolicyKit) jest wystarczająco rozpowszechniony, aby uznać go za standard.
MestreLion