Używam Trisquel GNU / Linux-Libre, która pochodzi z Gnome3 Flashback Desktop Environment.
Wiem, że mogę uruchomić aplikację GUI jako root przez sudo
& gksudo
ale chcę wiedzieć, że Jak uruchomić aplikacje GUI jako root z pomocą pkexec
?
Kiedy próbuje uruchomić gedit
(lub jakakolwiek inna aplikacja jak: nautilus
) by pkexec gedit
potem prosi o hasło do uwierzytelniania: -
Po wprowadzeniu hasła wychodzi z błędem: -
$ pkexec gedit
error: XDG_RUNTIME_DIR not set in the environment.
(gedit:6135): Gtk-WARNING **: cannot open display:
Wygląda więc na to, że coś jest nie tak ze środowiskiem wyświetlania.
Próbowałem też z, DISPLAY=:0 pkexec gedit
ale nie działa.
Dostępne są następujące informacje man pkexec
:
Środowisko, w którym PROGRAM je uruchomi, zostanie ustawione na minimalne znane i bezpieczne środowisko, aby uniknąć wstrzykiwania kodu przez LD_LIBRARY_PATH lub podobne mechanizmy. Ponadto zmienna środowiskowa PKEXEC_UID jest ustawiona na identyfikator użytkownika procesu wywołującego pkexec. W rezultacie pkexec nie pozwoli na uruchamianie aplikacji X11 jako inny użytkownik, ponieważ zmienne środowiskowe $ DISPLAY i $ XAUTHORITY nie są ustawione. Te dwie zmienne zostaną zachowane, jeśli adnotacja org.freedesktop.policykit.exec.allow_gui dla akcji jest ustawiona na niepustą wartość; jest to jednak odradzane i powinno się go stosować tylko w przypadku starszych programów.
Teraz nie wiem, co zrobić, aby to osiągnąć.
Pomóż mi więc dowiedzieć się, jak uruchamiać aplikacje GUI jako root za pomocą pkexec
. Czy jest to możliwe, czy nie?
BTW, zainspirowany gparted-pkexec
poleceniem, które działa dobrze. Jak gparted
korzystać pkexec
?
źródło
Odpowiedzi:
Można to zrobić, dodając niestandardowe akcje do zestawu zasad. Jeśli chcesz uruchomić gedit jako root
pkexec
, musisz na przykład utworzyć nowy plik/usr/share/polkit-1/actions/org.freedesktop.policykit.gedit.policy
:Wreszcie
pkexec gedit
powinno działać zgodnie z oczekiwaniami.Odwiedź stronę podręcznika użytkownika lub instrukcję obsługi, która wyjaśnia to PRZYKŁADEM, np .:
źródło
man pkexec
)!