Permissions
核心模組:設置可執行位?用 xz 壓縮?
我編寫/調整了一個自定義核心模組並安裝了它。
它按預期工作,但我注意到我係統上的其他核心模組使用 xz 壓縮並具有 0444 權限,而我沒有壓縮我的並使用可執行位集(0555 權限)安裝它。
$ stat --format=%A /path/to/my-module.ko -r-xr-xr-x $ stat --format=%A /path/to/other-module.ko.xz -r--r--r--
這是否有任何影響——性能、安全性或其他方面?我計劃壓縮我的並設置權限以匹配其他模組正在使用的內容,但我不知道他們正在使用的壓縮和權限的潛在動機。
關於權限:
無需為模組設置可執行位或寫入標誌。模組文件應該是可讀的,就是這樣。
insmod
,modinfo
,modprobe
或其他東西需要讀取模組文件。組或其他人的讀取權限可能需要通過objdump
,來調試模組nm
,即沒有真正的理由為任何人設置可執行位到模組。
關於壓縮:
Linux 核心具有內置的 XZ 壓縮實現。Linux 核心可以成功讀取(先前解壓縮)
initrd
映像、核心模組甚至其自身(核心文件名中的vmlinuz
最後一個z
告訴核心映像已壓縮)。我不知道你用的是什麼發行版。但是,如果您有壓縮的核心模組,那麼這是您的發行版的規則。當然,壓縮模組的大小比未壓縮的模組要小,但是如果核心模組編譯時沒有調試符號,那麼壓縮和未壓縮核心模組的大小差異會很小。另一方面,考慮到不需要大量模組,最好使用壓縮並為其他東西節省空間,而不是將其僅用於儲存大量模組。