Linux

如何阻止程序執行?

  • April 20, 2015

我可以殺死一個程序。但是如何在不將其從 Linux 中刪除的情況下防止該程序再次被呼叫呢?例如,如果我執行 netstat 之類的東西來查找與程序關聯的埠,然後將其殺死,我將在幾秒鐘內看到它再次以不同的 PID 執行。

更改其執行權限位。以 root 身份使用以下命令:

chmod a-x path_to_process_binary

這基本上拒絕了所有者、組和其他人的執行權限(as a= all)。

這個簡單的技巧將阻止程序執行,但我相信您的系統中可能會發生更嚴重的事情。

如果您確實需要自己執行它,請檢查此答案

也許有點太多了,但可能最安全的方法是使用 AppArmor 或 SELINUX 來阻止二進製文件的執行。修改文件權限將一直有效,直到提供該二進製文件的包被更新(然後,更新時它將再次設置為執行檔)。

另一方面,如果您試圖保護整個分區,以便無法直接在其中執行任何操作(例如,保護/var/tmp使任何人都無法在該目錄中解壓縮和執行二進製文件),您可以使用 " noexec" 選項標誌:

root@server: ~ # grep noexec /etc/fstab
/dev/sda6    /tmp   ext4   defaults,noexec,nosuid,nodev  1 1

這邊走:

root@server: /tmp # cp /usr/bin/vim .
root@server: /tmp # ./vim
-bash: ./vim: Permission denied

請注意,shell 腳本仍然可以作為 執行/bin/sh /tmp/myscript.sh,但不能直接使用./myscript.sh.

“noexec”標誌對網路伺服器很有用,因為您可以避免一些基於從易受攻擊的 PHP 或 CGI 站點下載、編譯和執行二進製文件的攻擊。

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