Linux
Ubuntu - 除非它們駐留在 /var/lib/php/session/ 中,否則無法執行二進製文件
我在 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
,在大多數情況下)都可用於儲存您希望執行的執行檔。您應該使用哪個目錄取決於您的確切案例。