Um motivo óbvio pelo qual .desktop
não tem necessariamente o bit de executável é que esses arquivos não foram executados em primeiro lugar. Um arquivo .desktop
contém metadados e informa ao ambiente da área de trabalho como associar programas a tipos de arquivos, mas nunca foi projetado para ser executado por si próprio.
No entanto, como um arquivo .desktop
informa indiretamente ao ambiente gráfico o que executar, ele tem uma capacidade indireta de lançar qualquer programa que esteja definido nele, abrindo as portas para explorações. Para evitar que arquivos .desktop
maliciosos sejam responsáveis pelo lançamento de programas hostis ou indesejados, os desenvolvedores do KDE e do gnome introduziram um hack personalizado que desviou um pouco o propósito pretendido da permissão de execução do arquivo Unix para adicionar uma camada de segurança. Com essa nova camada, apenas .desktop
arquivos com o conjunto de bits executável são levados em conta pelo ambiente de área de trabalho.
Apenas transformar um arquivo não executável como .desktop
one em um arquivo executável seria uma prática questionável, pois introduz um risco. Arquivos executáveis não binários sem shebang são executados por um shell (seja bash
ou sh
ou qualquer outro). Pedir ao shell para executar um arquivo que não é um shell script tem resultados imprevisíveis.
Para evitar esse problema, um shebang precisa estar presente nos arquivos .desktop
e deve apontar para o comando correto projetado para manipulá-los, xdg-open , como por exemplo o Thunderbird faz aqui:
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Name=Thunderbird
GenericName=Email
Comment=Send and Receive Email
...
Nesse caso, a execução do arquivo .desktop
fará o que o xdg-open
(e seu Ambiente de Área de Trabalho) acredita ser a coisa certa a fazer, possivelmente abrindo o arquivo com um navegador ou um editor de texto que pode não ser o que você espera.