Permissão de um arquivo .desktop

10

Precisa de alguns esclarecimentos sobre as permissões dos .desktoparquivos. Eu posso ver que todos os .desktoparquivos /usr/share/applications/pertencentes ao root têm permissão,

-rw-r--r--

Também examples.desktopna $HOMEpropriedade do usuário tem a mesma permissão. Todos eles correm corretamente.

Mas quando vou criar um .desktoparquivo personalizado com a mesma permissão, ele lança a seguinte mensagem de erro,

Iniciador de aplicativos não confiáveis
O iniciador de aplicativos "myapp.desktop" não foi marcado como confiável. Se você não souber a origem deste arquivo, iniciá-lo pode não ser seguro.

Mas adicionar a permissão de execução está permitindo a execução sem nenhum problema.

P: Por que os .desktoparquivos personalizados precisam ter +xpermissões para serem executados ou como alguns .desktoparquivos podem ser executados sem a permissão de execução? É possível executar um .desktoparquivo personalizado sem permissão de execução?

souravc
fonte
Relacionado , mas não responde à pergunta.
Olli

Respostas:

12

Isto é da política de segurança do Ubuntu :

Bit de Permissão de Execução Necessário

  • Os aplicativos, incluindo áreas de trabalho e shells, não devem executar código executável dos arquivos quando ambos:

    • sem o bit executável
    • localizado no diretório inicial ou no diretório temporário de um usuário.
  • Isso inclui arquivos * .desktop, * .jar e * .exe.

  • Nada pode fornecer uma solução alternativa para executá-los de qualquer maneira automaticamente ...

Portanto, sim, de acordo com essa política, deve ser possível executar um arquivo .desktop sem o conjunto de bits executável. De acordo com essa política, você só tem que mover o arquivo para fora dos /home/e /tmp/diretórios e então você pode lançá-lo sem o bit executável. Isso está em teoria / de acordo com a política.

Na prática, o nautilus permitirá que você inicie arquivos .desktop sem o bit executável definido nos diretórios XDG_DATA_DIR e no ~/.gnome2/diretório Você pode verificar o XDG_DATA_DIRS com o echo $XDG_DATA_DIRScomando Portanto, se você colocar seu arquivo .desktop em um XDG_DATA_DIR ou em ~/.gnome2/você poderá iniciá-lo no nautilus sem o conjunto de bits executável. Pelo menos em 12.04 funciona assim. Como isso está de acordo com a política acima mencionada que eu não conheço.


Para o examples.desktopmencionado na pergunta: Esse arquivo .desktop é um tipo diferente de arquivo .desktop. É um "Link", não quer executar nada, basicamente funciona como um link simbólico. Esses tipos de arquivos .desktop funcionam em qualquer lugar.

falcoeiro
fonte
11
Obrigado pela sua resposta. Abrange quase tudo o que eu queria saber. Apenas mais duas coisas. [i] Também estou usando o 12.04, mas um .desktoparquivo externo /homesem o bit executável não funcionou para mim. [ii] Posso adicionar alguma pasta $XDG_DATA_DIRS?, tentei export XDG_DATA_DIRS=$XDG_DATA_DIRS:~/.local/share/applications/sem sucesso.
souravc 12/02
@souravc [i] Como eu disse, isso está de acordo com a política que deve funcionar fora do /home/diretório. Como eu escrevi, na prática o nautilus se comporta de maneira diferente e até executa alguns .desktop de um diretório inicial ( ~/.gnome2/), mas não é executado em todos os diretórios fora de / home, apenas no XDG_DATA_DIRS. Então, acho que o comportamento do nautilus não está perfeitamente alinhado com a política. [ii] Sobre como adicionar um diretório, confira esta postagem no blog .
Falconer
1

Você pode criar e colocar o .desktoparquivo ~/.local/share/applications- então ele aparecerá no painel / menu / o que seja.

Será necessário algo parecido com isto:

[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

Isso ocorre porque os arquivos ~/.local/share/applicationsfuncionam da mesma forma que os arquivos /usr/share/applications- ambos na maioria dos sistemas funcionam bem sem permissões executáveis, também quando pertencem a um usuário que não seja root. No entanto, isso nem sempre parece ser o caso.

Para realmente clicar e abrir o arquivo, ele precisará de permissões executáveis.

Wilf
fonte
11
@ downvoter plz deixe um comentário para críticas construtivas. @ Wilf Acho que sua resposta não está exatamente respondendo à minha pergunta. Eu não poderia executar um .desktoparquivo a ~/.local/share/applicationsmenos que ele tenha a permissão de execução.
souravc
Eu sei que isso não é uma resposta como tal. Eu nunca tive o problema, eu apenas criei arquivos de texto no Gedit com conteúdo semelhante ao acima, logout e login, e funciona bem ... Eu fiz isso bem no Ubuntu 10, 12.04, 13.04, 13.10 e qualquer outro versão do Fedora desde o Fedora 12. Alguns no Debian também. Verificando mostra que a maioria deles tem as permissões -rw-r--r--....
Wilf
0

Parece que não, você não pode sem modificar o GNOME. Há um relatório de bug da barra de ativação , que é confirmado, mas não foi acionado, sobre esse problema exato.

Quando você cria um .desktoparquivo personalizado /usr/share/applications/com a raiz do proprietário, ele não requer permissão de execução.

Olli
fonte
Este relatório de erros é realmente antigo (no Ubuntu 10.04). Não encontrei nenhum relatório desse tipo para o Ubuntu 12.04. Você encontrou alguma coisa?
souravc