沒有設置可執行位的 .desktop 文件有什麼優勢?
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
(以及您的桌面環境)認為是正確的事情,可能只是使用瀏覽器或文本編輯器打開文件,這可能不是您所期望的。