Autorisation d'un fichier .desktop

10

Besoin de précisions sur les autorisations des .desktopfichiers. Je peux voir tous les .desktopfichiers /usr/share/applications/appartenant à root ont la permission,

-rw-r--r--

également examples.desktopà la $HOMEpropriété par l' utilisateur a la même autorisation. Tous ceux-ci fonctionnent correctement.

Mais quand je vais créer un .desktopfichier personnalisé ayant la même autorisation, il envoie le message d'erreur suivant,

Lanceur d'applications non approuvé
Le lanceur d' applications "myapp.desktop" n'a pas été marqué comme approuvé. Si vous ne connaissez pas la source de ce fichier, son lancement peut être dangereux.

Mais l'ajout de l'autorisation d'exécution lui permet de s'exécuter sans aucun problème.

Q: Pourquoi les .desktopfichiers personnalisés doivent-ils avoir des +xautorisations pour s'exécuter ou comment certains .desktopfichiers peuvent-ils s'exécuter sans autorisation d'exécution? Est-il possible d'exécuter un .desktopfichier personnalisé sans autorisation d'exécution?

souravc
la source
Lié , mais ne répond pas à la question.
Olli

Réponses:

12

Cela vient de la politique de sécurité d' Ubuntu :

Bit Execute-Permission requis

  • Les applications, y compris les bureaux et les shells, ne doivent pas exécuter de code exécutable à partir de fichiers lorsqu'ils sont tous les deux:

    • sans le bit exécutable
    • situé dans le répertoire de base d'un utilisateur ou dans un répertoire temporaire.
  • Cela inclut les fichiers * .desktop, * .jar et * .exe.

  • Rien ne peut fournir une solution de contournement pour les exécuter de toute façon automatiquement ...

Donc, oui, selon cette politique, il devrait être possible d'exécuter un fichier .desktop sans le bit exécutable défini. Selon cette politique que vous ne devez déplacer ce fichier à partir des /home/et /tmp/répertoires et vous pouvez le lancer sans le bit exécutable. C'est en théorie / selon la politique.

Dans la pratique, nautilus vous permettra de lancer des fichiers .desktop sans le bit exécutable défini à partir des répertoires XDG_DATA_DIR et du ~/.gnome2/répertoire. Vous pouvez vérifier les XDG_DATA_DIRS avec la echo $XDG_DATA_DIRScommande. Donc, si vous placez votre fichier .desktop dans un XDG_DATA_DIR ou dedans, ~/.gnome2/vous pourrez le lancer depuis nautilus sans le bit exécutable défini. Au moins le 12.04, ça fonctionne comme ça. Comment cela est-il conforme à la politique susmentionnée, je ne sais pas.


Pour les personnes examples.desktopmentionnées dans la question: Ce fichier .desktop est un autre type de fichier .desktop. C'est un "lien", il ne veut rien exécuter, il fonctionne essentiellement comme un lien symbolique. Ces types de fichiers .desktop fonctionnent partout.

fauconnier
la source
1
Merci pour votre réponse. Il couvre presque tout ce que je voulais savoir. Encore deux choses. [i] J'utilise également 12.04, mais un .desktopfichier à l'extérieur /homesans bit exécutable n'a pas fonctionné pour moi. [ii] Puis-je ajouter n'importe quel dossier $XDG_DATA_DIRS?, j'ai essayé export XDG_DATA_DIRS=$XDG_DATA_DIRS:~/.local/share/applications/sans succès.
souravc
@souravc [i] Comme je l'ai dit, c'est selon la politique qu'il devrait fonctionner en dehors du /home/répertoire. Comme je l'ai écrit, dans la pratique, nautilus se comporte différemment et exécute même certains fichiers .desktop à partir d'un répertoire personnel ( ~/.gnome2/) mais ne s'exécute pas à partir de tous les répertoires en dehors de / home, uniquement à partir des XDG_DATA_DIRS. Je pense donc que le comportement de nautilus n'est pas parfaitement conforme à la politique. [ii] Pour ajouter un répertoire, consultez ce billet de blog .
fauconnier
1

Vous pouvez créer et placer le .desktopfichier dans ~/.local/share/applications- puis il apparaîtra dans le tiret / menu / quoi que ce soit.

Il devra ressembler à ceci:

[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

Cela est dû au fait que les fichiers dans ~/.local/share/applicationsfonctionnent de la même manière que les fichiers dans /usr/share/applications- les deux sur la plupart des systèmes fonctionnent correctement sans autorisations exécutables, également lorsqu'ils appartiennent à un utilisateur autre que root. Cependant, cela ne semble pas toujours être le cas.

Pour réellement cliquer sur le fichier, puis l'ouvrir, il aura besoin d'autorisations exécutables.

Wilf
la source
1
@ downvoter plz laisser un commentaire pour une critique constructive. @wilf Je pense que votre réponse ne répond pas exactement à ma question. Je ne pouvais pas exécuter un .desktopfichier à ~/.local/share/applicationsmoins qu'il ne dispose de l'autorisation d'exécution.
souravc
Je sais que ce n'est pas une réponse en tant que telle. Je n'ai jamais eu le problème, je viens de créer des fichiers texte dans Gedit avec un contenu similaire à celui ci-dessus, la déconnexion et la connexion, et cela fonctionne très bien .... J'ai fait cela très bien sur Ubuntu 10, 12.04, 13.04, 13.10, et tout version de Fedora depuis environ Fedora 12. Certains sur Debian aussi. La vérification montre qu'ils ont surtout les autorisations -rw-r--r--....
Wilf
0

Il semble que non, vous ne pouvez pas le faire sans modifier GNOME. Il y a un rapport de bogue du tableau de bord , qui est confirmé, mais sans suite, sur ce problème exact.

Lorsque vous créez un .desktopfichier personnalisé sous /usr/share/applications/avec la racine du propriétaire, il ne nécessite pas d'autorisation d'exécution.

Olli
la source
Ce rapport de bogue est vraiment ancien (sur Ubuntu 10.04). Je n'ai rencontré aucun rapport de ce type pour Ubuntu 12.04. Avez-vous trouvé quelque chose?
souravc