如何阻止进程运行?

如何阻止进程运行?

我可以杀死一个进程。但是,如何在不将其从 Linux 中删除的情况下防止再次调用该进程呢?例如,如果我运行 netstat 之类的东西来查找与该进程关联的端口,然后杀死它,我将在几秒钟内看到它再次以不同的 PID 运行。

答案1

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

chmod a-x path_to_process_binary

这基本上拒绝了所有者、组和其他人(as a= all)的执行权限。

这个简单的技巧将阻止该进程运行,但我相信您的系统中可能会发生更严重的事情。

如果您确实需要自己运行,请检查这个答案

答案2

也许有点太多了,但最安全的方法可能是使用 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 站点下载、编译和执行二进制文件的攻击。

相关内容