Tại sao nó không hoạt động?
Theo mặc định pkexec
, không cho phép bạn chạy các ứng dụng đồ họa (X11). Từ trang người đàn ông:
The environment that PROGRAM will run it, will be set to a minimal
known and safe environment in order to avoid injecting code through
LD_LIBRARY_PATH or similar mechanisms. In addition the PKEXEC_UID
environment variable is set to the user id of the process invoking
pkexec.
As a result, pkexec will not allow you to run X11 applications
as another user since the $DISPLAY and $XAUTHORITY environment
variables are not set.
These two variables will be retained if the
org.freedesktop.policykit.exec.allow_gui annotation on an action is set
to a nonempty value; this is discouraged, though, and should only be
used for legacy programs.
Như đã nêu trong trang người đàn ông, bạn có thể làm cho nó hoạt động mặc dù tôi thực sự không biết điều này có nguy hiểm hay được khuyến nghị không .
Để bật gedit chẳng hạn, bạn có thể tạo /usr/share/polkit-1/actions/com.ubuntu.gedit.policy
với nội dung sau:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
<policyconfig>
<vendor>gedit</vendor>
<vendor_url>gedit</vendor_url>
<icon_name>accessories-text-editor</icon_name>
<action id="org.freedesktop.policykit.pkexec.gedit">
<description>Run "gedit"</description>
<message>Authentication is required to run Text Editor</message>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/gedit</annotate>
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
</action>
</policyconfig>
Sau đó pkexec gedit
nên làm việc như mong đợi:
Như bạn có thể đoán, điều này sẽ chỉ làm cho gedit
công việc. Về lý thuyết, nếu bạn đã thêm allow_gui
vào "org.freedesktop.policykit.exec" (hành động mặc định) thì nó sẽ hoạt động cho tất cả các ứng dụng, nhưng trong các thử nghiệm của tôi, tôi đã nhận được kết quả tương tự như của bạn.
Tại sao pkexec được ưa thích?
Ở đây bạn có thể tìm thấy một cuộc thảo luận về những điểm mạnh của pkexec
.