Одна очевидная причина, по которой .desktop
не обязательно имеет установленный бит исполняемого файла, заключается в том, что эти файлы изначально не предназначались для выполнения. Файл .desktop
содержит метаданные, которые сообщают среде рабочего стола, как связать программы с типами файлов, но никогда не предназначались для выполнения самостоятельно.
Однако, поскольку файл .desktop
косвенно указывает графической среде, что выполнять, он имеет косвенную возможность запускать любую программу, определенную в нем, открывая дверь для эксплойтов. Чтобы вредоносные файлы .desktop
не несли ответственность за запуск враждебных или нежелательных программ, разработчики KDE и gnome представили специальный хак, который несколько отклоняется от предполагаемой цели разрешения на выполнение файлов Unix для добавления уровня безопасности.С этим новым слоем среда рабочего стола учитывает только файлы .desktop
с установленным исполняемым битом.
Простое превращение неисполняемого файла, такого как .desktop
, в исполняемый было бы сомнительной практикой, поскольку это связано с риском. Небинарные исполняемые файлы без шебанга выполняются оболочкой (будь то bash
или sh
или что-то еще). Запрос оболочки на выполнение файла, который не является сценарием оболочки, приводит к непредсказуемым результатам.
Чтобы избежать этой проблемы, в файлах .desktop
должен присутствовать шебанг, который должен указывать на правильную команду, предназначенную для их обработки, xdg-open, например Thunderbird делает следующее:
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Name=Thunderbird
GenericName=Email
Comment=Send and Receive Email
...
В этом случае выполнение файла .desktop
сделает все, что xdg-open
(и ваша среда рабочего стола) считает правильным, возможно, просто открытие файла в браузере или текстовом редакторе, что может оказаться не таким, как вы ожидаете.