Linux

Ubuntu - 除非它們駐留在 /var/lib/php/session/ 中,否則無法執行二進製文件

  • May 19, 2019

我在 Ubuntu 18.04(Bionic Beaver)和其他幾個基於 Debian 的系統中註意到了這個奇怪的問題——netcat為了展示,我將採用靜態連結的二進製文件(一個 unix 網路工具),但結果是相同的任何其他 ELF 執行檔。

執行它會給出以下消息(來自任何普通目錄,例如/tmp):

/tmp$ ./nc
-bash: ./nc: Permission denied

權限chmod對於執行權限是正確的:

/tmp$ ls -lah nc
-rwxr-xr-x 1 user user 2.8M May 19 19:38 nc

我嘗試了很多組合,但都沒有奏效,直到我的一個朋友建議我將二進製文件放入/var/lib/php/session(PHPSESSID 所在的位置)並且它可以工作:

/var/lib/php/session$ ./nc
Ncat: You must specify a host to connect to. QUITTING.

但是,我還沒有找到對此的解釋,並且php不是每個系統都存在,那麼在這種情況下我該怎麼辦?

/tmp使用標誌掛載時會發生這種情況noexec,這可能是您系統上的情況 - 請參閱mount. /tmp無論文件的權限如何,這都可以防止儲存在其下的任何執行檔執行。使用此設置掛載和其他世界可寫目錄背後的想法/tmp是使在系統上刪除二進製文件和執行它們變得更加困難。

沒有 掛載的捲中的任何目錄noexec(例如/var,在大多數情況下)都可用於儲存您希望執行的執行檔。應該使用哪個目錄取決於您的確切案例。

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