pkexec aus nemo heraus funktioniert nicht

KDE, Gnome, Windowmanager, X11, Grafiktreiber und alles was dazu notwendig ist. Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
barand3
Beiträge: 162
Registriert: 29.03.2018 18:52:16

pkexec aus nemo heraus funktioniert nicht

Beitrag von barand3 » 16.05.2018 23:22:42

Hallo,
ich habe in Nemo eine Action angellegt, die wird im Kontext Menü auch angezeigt

Code: Alles auswählen

[Nemo Action]
Name=Root write File
Name[de]=Datei als root bearbeiten
Comment[de]=Datei als root bearbeiten
Exec=pkexec gedit
Icon-Name=file
Selection=any
Extensions=any;
Quote=double
Terminal=false
allerdings startet sie nicht.
Der Aufruf im Terminal funktioniert.

Benutzeravatar
smutbert
Beiträge: 6311
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: pkexec aus nemo heraus funktioniert nicht

Beitrag von smutbert » 16.05.2018 23:43:22

Offensichtlich ist das Erstellen einer "action" in policy-Kit notwendig, damit sich das ganze in der GUI nutzen lässt. Ein Beispiel ist in der manpage von pkexec zu finden und hier
https://askubuntu.com/questions/641593/ ... sktop-file
https://unix.stackexchange.com/question ... ing-pkexec

(mir ist allerdings nicht klar ob das nur an den Variablen DISPLAY und XAUTHORITY oder auch noch an etwas anderem liegt)

barand3
Beiträge: 162
Registriert: 29.03.2018 18:52:16

Re: pkexec aus nemo heraus funktioniert nicht

Beitrag von barand3 » 17.05.2018 00:01:34

Danke Dir.
eine Action hab ich erstellt

Code: Alles auswählen

com.ubuntu.pkexec.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="com.ubuntu.pkexec.gedit">
    <message>Authentication is required to run the gedit Editor</message>
    <icon_name>gedit</icon_name>
    <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>
also wie gesagt, aus dem Terminal funzt das

Wenn ich das log laufen lasse bei der action, dann wird mir das angezeigt

Code: Alles auswählen

nemo.desktop[3711]: Refusing to render service to dead parents
klingt wie ein X Fehler, oder???

barand3
Beiträge: 162
Registriert: 29.03.2018 18:52:16

Re: pkexec aus nemo heraus funktioniert nicht

Beitrag von barand3 » 17.05.2018 00:14:34

Ich habe etwas gefunden, was mit dem Fehler zusammenhängt.

Code: Alles auswählen

Exec=sh -c "pkexec gedit %F"
Das funktioniert prima.
Wenn mir bitte noch jemand die Bedeutung in diesem Zsammenhang von "sh -c" erklären könnte!?
Ich wäre total dankbar.

Ich hatte angenommen, das der Shell Befehl nur für die Konsole bestimmt ist!?

Benutzeravatar
smutbert
Beiträge: 6311
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: pkexec aus nemo heraus funktioniert nicht

Beitrag von smutbert » 17.05.2018 09:43:15

sh (/bin/sh) ist die Default-Shell und wenn man nicht explizit etwas anderes gewählt hat, ein Link auf die Debiandash. Für deinen Zweck ist es aber egal auf welche Shell sh zeigt.

Mit »sh -c "..."« startest du also diese Shell und lässt sie den Befehl "..." ausführen und danach wieder beenden. Es gibt kein Terminalfenster zur Ein- und Ausgabe, aber abgesehen davon läuft das auf dasselbe wie der Start in einem Terminalfenster hinaus.


Alternativ soll es wohl auch funktionieren für den Start wie in den Links ein Wrapper-Skript anzulegen, etwa »/usr/local/bin/gedit-pkexec« mit einem Inhalt wie

Code: Alles auswählen

#!/bin/sh
pkexec gedit "$@"
das Skript ausführbar zu manchen und dann als Befehl anzugeben.

Benutzeravatar
geier22
Beiträge: 3499
Registriert: 23.02.2014 09:43:01
Wohnort: Berlin

Re: pkexec aus nemo heraus funktioniert nicht

Beitrag von geier22 » 17.05.2018 10:14:45

Versuche mal diese policy. Ist die Originale. Habe Nemo in Xfce / Buster installiert. Da wurde die mitgeliefert.
Mir schleierhaft, warum das nicht auch in Stable mitkommt, und man da mal wieder Terminal- Jockey spielen muss.

Code: Alles auswählen

<?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>

 <vendor>Nemo Project</vendor>
 <vendor_url>https://github.com/linuxmint/nemo</vendor_url>

 <action id="org.nemo.root">
   <description>Run Nemo with elevated privileges</description>
   <message>Please enter your password to run Nemo as root</message>
   <icon_name>gksu-root-terminal</icon_name>
   <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/nemo</annotate>
   <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
 </action>

</policyconfig>
Nur Testing und sonst nix Xfce / KDE / Gnome / Asrock Fatal1ty 970 Performance 3.1 / AMD FX-6300 / 16GB RAM / Nvidia GTX 750 TI / HP LP3065

barand3
Beiträge: 162
Registriert: 29.03.2018 18:52:16

Re: pkexec aus nemo heraus funktioniert nicht

Beitrag von barand3 » 17.05.2018 10:52:41

Danke @smutbert, das mit dem Script funktioniert auch sehr gut, dies Lösung erscheint mir sauberer.

@geier22 die policy wurde schon angelegt und funktioniert auch, ich wollte nur eine Möglichkeit, aus dem Nemo heraus die
Datei zu bearbeiten, ohne ein neues Admin Fenster zu öffnen.

Vielen Dank für die Hilfe!

Antworten