Berechtigung einer .desktop-Datei

10

Benötigen Sie eine Klarstellung über die Berechtigungen von .desktopDateien. Ich kann sehen, dass alle .desktopDateien im /usr/share/applications/Besitz von root die Berechtigung haben.

-rw-r--r--

Auch examples.desktopim $HOMEBesitz des Benutzers hat die gleiche Berechtigung. Alle diese laufen richtig.

Wenn ich jedoch eine benutzerdefinierte .desktopDatei mit derselben Berechtigung erstellen möchte , wird die folgende Fehlermeldung ausgegeben:

Nicht vertrauenswürdiger Anwendungsstarter
Der Anwendungsstarter "myapp.desktop" wurde nicht als vertrauenswürdig markiert. Wenn Sie die Quelle dieser Datei nicht kennen, ist das Starten möglicherweise unsicher.

Durch Hinzufügen der Ausführungsberechtigung kann sie jedoch problemlos ausgeführt werden.

F: Warum .desktopbenötigen benutzerdefinierte Dateien +xBerechtigungen zum Ausführen oder wie können einige .desktopDateien ohne Ausführungsberechtigung ausgeführt werden? Ist es möglich, eine benutzerdefinierte .desktopDatei ohne Ausführungsberechtigung auszuführen ?

Souravc
quelle
Verwandte , beantwortet aber die Frage nicht.
Olli

Antworten:

12

Dies geht aus der Sicherheitsrichtlinie von Ubuntu hervor :

Ausführungsberechtigungsbit erforderlich

  • Anwendungen, einschließlich Desktops und Shells, dürfen keinen ausführbaren Code aus Dateien ausführen, wenn beide:

    • Fehlen des ausführbaren Bits
    • befindet sich im Home-Verzeichnis oder im temporären Verzeichnis eines Benutzers.
  • Dies umfasst * .desktop-, * .jar- und * .exe-Dateien.

  • Nichts kann eine Problemumgehung bieten, um sie trotzdem automatisch auszuführen ...

Ja, gemäß dieser Richtlinie sollte es möglich sein, eine Desktop-Datei ohne gesetztes ausführbares Bit auszuführen. Gemäß dieser Politik würden Sie nur die Datei bewegen müssen aus den /home/und /tmp/Verzeichnissen und dann können Sie es ohne die ausführbaren Bit gesetzt starten. Dies ist theoretisch / gemäß der Politik.

In der Praxis können Sie mit nautilus .desktop-Dateien starten, ohne dass das ausführbare Bit aus den Verzeichnissen XDG_DATA_DIR und aus dem ~/.gnome2/Verzeichnis gesetzt wurde. Sie können XDG_DATA_DIRS mit dem echo $XDG_DATA_DIRSBefehl überprüfen . Wenn Sie also Ihre .desktop-Datei in einem XDG_DATA_DIR ablegen oder in, können ~/.gnome2/Sie sie von nautilus aus starten, ohne dass das ausführbare Bit gesetzt ist. Zumindest am 12.04 funktioniert es so. Wie dies mit der oben genannten Politik übereinstimmt, weiß ich nicht.


Für die examples.desktopin der Frage genannten: Diese .desktop-Datei ist eine andere Art von .desktop-Datei. Es ist ein "Link", es will nichts ausführen, es funktioniert im Grunde als Symlink. Diese Art von .desktop-Dateien funktionieren überall.

Falkner
quelle
1
Danke für deine Antwort. Es deckt fast alles ab, was ich wissen wollte. Nur noch zwei Dinge. [i] Ich verwende auch 12.04, aber eine .desktopDatei außerhalb /homeohne ausführbares Bit hat bei mir nicht funktioniert. [ii] Kann ich einen Ordner hinzufügen $XDG_DATA_DIRS? Ich habe es export XDG_DATA_DIRS=$XDG_DATA_DIRS:~/.local/share/applications/ohne Erfolg versucht .
Souravc
@souravc [i] Wie gesagt, das entspricht der Richtlinie, dass es außerhalb des /home/Verzeichnisses funktionieren soll . Wie ich geschrieben habe, verhält sich nautilus in der Praxis anders und führt sogar einige .desktop aus einem Home-Verzeichnis ( ~/.gnome2/) aus, aber nicht aus jedem Verzeichnis außerhalb von / home, sondern nur aus XDG_DATA_DIRS. Daher denke ich, dass das Verhalten von Nautilus nicht perfekt mit der Politik übereinstimmt. [ii] Informationen zum Hinzufügen eines Verzeichnisses finden Sie in diesem Blogbeitrag .
Falkner
1

Sie können die .desktopDatei erstellen und ablegen ~/.local/share/applications- dann wird sie im Bindestrich / Menü / was auch immer angezeigt.

Es muss ungefähr so ​​aussehen:

[Desktop Entry]
Name=Files
Comment=Launch Nemo File manager
Keywords=folder;manager;explore;disk;filesystem;
Exec=nemo %U
Icon=system-file-manager
Terminal=false
Type=Application
StartupNotify=true
OnlyShowIn=GNOME;Unity;
Categories=GNOME;GTK;Utility;Core;
NoDisplay=false

Dies liegt daran, dass die Dateien in den Dateien ~/.local/share/applicationsgenauso funktionieren wie die Dateien in. /usr/share/applicationsBeide funktionieren auf den meisten Systemen ohne ausführbare Berechtigungen einwandfrei, auch wenn sie einem anderen Benutzer als root gehören. Dies scheint jedoch nicht immer der Fall zu sein.

Damit die Datei tatsächlich angeklickt und dann geöffnet werden kann, sind ausführbare Berechtigungen erforderlich.

Wilf
quelle
1
@ downvoter plz hinterlasse einen Kommentar für konstruktive Kritik. @wilf Ich denke, deine Antwort beantwortet meine Frage nicht genau. Ich konnte eine .desktopDatei nur ausführen, ~/.local/share/applicationswenn sie über die Ausführungsberechtigung verfügt.
Souravc
Ich weiß, dass dies keine Antwort als solche ist. Ich hatte noch nie das Problem, ich habe gerade Textdateien in Gedit mit ähnlichen Inhalten wie oben erstellt, Abmelden und Anmelden, und es funktioniert einwandfrei. Ich habe dies unter Ubuntu 10, 12.04, 13.04, 13.10 und anderen gut getan Version von Fedora seit Fedora 12. Einige auch auf Debian. Das Überprüfen zeigt, dass sie meistens die Berechtigungen haben -rw-r--r--....
Wilf
0

Es scheint nein, Sie können nicht ohne GNOME zu ändern. Es gibt einen Launchpad-Fehlerbericht , der zu diesem genauen Problem bestätigt, aber nicht bearbeitet wird.

Wenn Sie eine benutzerdefinierte .desktopDatei /usr/share/applications/mit dem Eigentümer root erstellen , ist keine Ausführungsberechtigung erforderlich.

Olli
quelle
Dieser Fehlerbericht ist wirklich alt (unter Ubuntu 10.04). Ich habe keinen solchen Bericht für Ubuntu 12.04 gefunden. Hast du etwas gefunden?
Souravc