.desktop文件中的pkexec命令
我为Androxyde的Flashtool制作了一个.desktop文件(索尼Xperia设备的实用程序,我必须在其文件夹中打开一个可执行文件),该文件需要root权限才能使用fastboot实用程序。 我曾经使它与gksu
工作,但我在Ubuntu 15.04上,而gksu现在已经老了。
我试图修改exec
行
Exec=gksu /home/natasha/FlashTool/FlashTool
至
Exec=pkexec /home/natasha/FlashTool/FlashTool
然后,我读到pkexec不允许运行X11应用程序,因此我以这种方式覆盖:
链接到Imgur.com上的完整图像
现在的问题是:它问我密码但Flashtool的GUI无法启动。 但是如果我在终端中执行该命令,则程序启动没有问题。 我能做什么?
链接到Imgur.com上的完整图像
在/usr/share/polkit-1/actions/
创建一个新文件
sudo nano /usr/share/polkit-1/actions/FlashTool.policy
并添加以下行:
Run FlashTool Authentication is required to run FlashTool no no auth_admin_keep /home/natasha/FlashTool/FlashTool TRUE
然后创建一个新文件/home/natasha/FlashTool/
nano /home/natasha/FlashTool/flashtool-pkexec
并添加以下行:
#!/bin/sh pkexec "/home/natasha/FlashTool/FlashTool" "$@"
在desktop
文件中使用以下行代码:
Exec=/home/natasha/FlashTool/flashtool-pkexec
在我的系统Ubuntu 15.04 GNOME上测试 ,包含以下文件:
$ cat /usr/share/applications/gedit.root.desktop [Desktop Entry] Name=Gedit as root GenericName=Text Editor X-GNOME-FullName= Comment= Exec=gedit-pkexec Icon=gedit Terminal=false Type=Application Categories=GNOME;System;Filesystem;Settings; StartupNotify=true X-Ubuntu-Gettext-Domain=gedit $ cat /usr/share/polkit-1/actions/gedit.policy Run FlashTool Authentication is required to run FlashTool no no auth_admin_keep /usr/bin/gedit TRUE $ cat /usr/bin/gedit-pkexec #!/bin/sh pkexec "gedit" "$@"
sudo -H
足以启动一个图形应用程序,防止更改~/
的用户配置文件,因为它将运行环境的主目录设置为root的主目录:
Exec=sudo -H /home/natasha/FlashTool/FlashTool