Qual é a vantagem dos arquivos .desktop sem o bit executável definido?

1

A freedesktop organização define o padrão para arquivos .desktop . Infelizmente, ele não define as permissões do arquivo (consulte a lista de discussão do freedesktop ) e o software é distribuído com

a) executable .desktop files
b) non executable .desktop files
c) mixed a) and b) in one software package. 

Isso não é muito satisfatório para os distribuidores Linux , que pretendem fornecer um sistema consistente. Eu quero usar o público amplo de sx, para descobrir

qual a vantagem de ter um arquivo .desktop sem bit de execução? Existe algum motivo para não ter todos os arquivos .desktop executáveis se o sistema de arquivos permitir?

Existem problemas de segurança conhecidos? Existem programas que têm dificuldades com o arquivo executável .desktop ?

    
por Jonas Stein 25.06.2017 / 11:43

1 resposta

5

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.

    
por 25.06.2017 / 12:26