From the following questions
we see that gksu will no longer be supported in the long term, and it will not be installed by default from >= 13.04. Instead we should use pkexec which does its job fine for non-graphical applications but not for apllications on the GUI:
pkexec gedit
when replacing gksu in a .desktop file
EXEC=pkexec /usr/bin/gedit
or when I run a python script to run a graphical application with root permissions I get the following error:
>>>subprocess.Popen(['pkexec','gedit'])
** (gedit:3203): WARNING **: Could not open X display
How would I have to re-write my scripts or my .desktop files to support an authentication dialog and run an application as root if I should not have it depend on gksu?
First create a
.policy
action file in/usr/share/polkit-1/actions/
. It's conventional to name action files in a "vendor hierarchical" way, such ascom.ubuntu.pkexec.gparted.policy
ororg.debian.apt.policy
Then paste the following content:
Replace
[Short/Full Program Name/Path]
with appropriate values, for examplegedit
,gedit Text Editor
and/usr/bin/gedit
.<action id>
value does not need to match the chosen filename (and a single file can contain multiple actions), but conventionally filename is the prefix for all its actions.After saving the file the specific program would run with X and GUI and such.
Another fix seems to be: Add the following line in /etc/pam.d/polkit-1:
Yet another fix for user scripts: Determine the appropriate environment variables inside your script.
You could use a snippet like the following one to do this:
(based on the ACPI
getXuser
function)If you find your
.desktop
file still not working you could try wrapping yourpkexec commandline
in ash
snippet, e.g.:The last problem is a known bug, apparently:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690339
https://bugzilla.xfce.org/show_bug.cgi?id=9373
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=650038
https://bugzilla.gnome.org/show_bug.cgi?id=686059