Bir .desktop dosyasında pkexec komutu


13

Fastboot yardımcı programlarını kullanmak için kök ayrıcalıkları gerektiren Androxyde Flashtool (klasöründe yürütülebilir bir dosyayla açmam gereken Sony Xperia cihazları için bir yardımcı program) için bir .desktop dosyası hazırladım. Eskiden onunla gksuçalışırdım, ama Ubuntu 15.04 kullanıyorum ve gksu şimdi eskidir.

execSatırı değiştirmeye çalıştım

Exec=gksu /home/natasha/FlashTool/FlashTool
için
Exec=pkexec /home/natasha/FlashTool/FlashTool
Sonra, pkexec'in X11 uygulamalarını çalıştırmasına izin vermediğini okudum ve bu şekilde geçersiz kıldım:

resim açıklamasını buraya girin

Imgur.com'da tam resme bağlantı

Sorun şu: Bana şifreyi soruyor ancak Flashtool'un GUI'si başlamıyor. AMA terminalde bu komutu çalıştırırsam, program sorunsuz başlar. Ne yapabilirim?

resim açıklamasını buraya girin

Imgur.com'da tam resme bağlantı


pkexec'in çalışması için bir politika dosyasına ihtiyacı var, burada bir bilgi oluşturmanız gerekir - freedesktop.org/software/polkit/docs/0.105/pkexec.1.html veya nasıl yapıldığını görmek için mevcut olanları kullanın, - / usr / share / polkit-1 / eylemler. Uygulama yükleme işleminin bir parçası olduğunda politikaların bazen daha iyi olduğunu unutmayın (yani sorun olmadan çalışın), 'Ekran açılamıyor' hatası alırsanız ubuntuforums.org/…
doug

Yanıtlar:


9

'Da yeni bir dosya oluştur /usr/share/polkit-1/actions/

sudo nano /usr/share/polkit-1/actions/FlashTool.policy

ve aşağıdaki satırları ekleyin:

<?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/policyconfig.dtd">

<policyconfig>

  <action id="org.freedesktop.policykit.pkexec.run-FlashTool">
    <description>Run FlashTool</description>
    <message>Authentication is required to run FlashTool</message>
    <defaults>
      <allow_any>no</allow_any>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/home/natasha/FlashTool/FlashTool</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">TRUE</annotate>
  </action>

</policyconfig>

Ardından yeni bir dosya oluşturun /home/natasha/FlashTool/

nano /home/natasha/FlashTool/flashtool-pkexec

ve aşağıdaki satırları ekleyin:

#!/bin/sh
pkexec "/home/natasha/FlashTool/FlashTool" "$@"

İçin aşağıdaki satırı kullanın Execsizin de desktopdosyaya:

Exec=/home/natasha/FlashTool/flashtool-pkexec

Sistemim Ubuntu 15.04 GNOME üzerinde şu dosyalarla test edildi:


$ 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 
<?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/policyconfig.dtd">

<policyconfig>

  <action id="org.freedesktop.policykit.pkexec.run-FlashTool">
    <description>Run FlashTool</description>
    <message>Authentication is required to run FlashTool</message>
    <defaults>
      <allow_any>no</allow_any>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</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>

$ cat /usr/bin/gedit-pkexec 
#!/bin/sh
pkexec "gedit" "$@"

İşe yarıyor! Değiştirdiğim tek şey Execkomutta: Daha Exec=pkexec /home/natasha/FlashTool/FlashToolönce olduğu gibi yazdım , çünkü flashtool-pkexec .desktop dosyasında çalışmaz. Politika dosyası sayesinde bir cazibe gibi çalışır. Teşekkür ederim!
nplezka

@nplezka .desktop dosyasından bile bir kabuk komut dosyası çalıştırmak için #!, Execkomutun önüne ön ek eklemeniz gerekir /bin/sh.
TheSola10

0

sudo -H~/çalışan ortamın ana dizinini kökün ana dizinine ayarladığından, kullanıcının yapılandırma dosyalarında değişiklik yapılmasını önleyen bir grafik uygulamasını başlatmak için yeterlidir :

Exec=sudo -H /home/natasha/FlashTool/FlashTool

Bir desktopdosyada mı?
AB

@AB Evet, neden olmasın?
kos

@AB Herhangi bir shörnekte çalıştırmakla aynıdır (muhtemelen bazı ortam değişkenleri geçici olarak ayarlanmıştır, ancak burada bir sorun yoktur).
kos

Başlatıcıda bir hattınız sudovarsa (OP burada olduğu gibi) şifrenizi isteyip uygulamayı başlatacağını sanmıyorum . Ancak büyük olasılıkla bununla birlikte çalışacaktır . Terminal=false.desktopTerminal=true
Pomsky
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.