Files

沒有設置可執行位的 .desktop 文件有什麼優勢?

  • August 10, 2020

freedesktop組織定義了文件的標準.desktop。不幸的是,它沒有定義文件的權限(請參閱freedesktop mailinglist)並且軟體是隨

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

對於旨在提供一致系統的Linux 發行商來說,這並不是很令人滿意。我想利用 sx 的廣大受眾,來了解一下

**沒有執行位的 .desktop 文件有什麼優勢?**如果文件系統允許,是否有任何理由不讓所有.desktop文件都可執行?

是否存在已知的安全問題?有沒有執行檔有困難的程序.desktop

a 不一定設置可執行位的一個明顯原因.desktop是這些文件一開始就不是可執行的。文件.desktop包含元數據,告訴桌面環境如何將程序與文件類型相關聯,但從未設計為自行執行。

然而,作為一個.desktop文件間接告訴圖形環境要執行什麼,它具有啟動其中定義的任何程序的間接能力,從而為漏洞利用打開了大門。為了避免惡意.desktop文件對惡意或有害程序的啟動負責,KDE 和 gnome 開發人員引入了一種自定義 hack,它在某種程度上偏離了預期的 Unix 文件執行權限目的,以添加安全層。有了這個新層,.desktop桌面環境只考慮設置了可執行位的文件。

僅僅將非執行檔(如文件)轉換為執行檔.desktop將是一種有問題的做法,因為它會帶來風險。沒有shebang的非二進制執行檔由shell(無論是它bash還是sh其他)執行。要求 shell 執行不是 shell 腳本的文件會產生不可預知的結果。

為避免該問題,文件中需要存在 shebang,.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(以及您的桌面環境)認為是正確的事情,可能只是使用瀏覽器或文本編輯器打開文件,這可能不是您所期望的。

引用自:https://unix.stackexchange.com/questions/373239