SIGABRT 与 ENOTSUP

SIGABRT vs. ENOTSUP

在 OpenBSD 上:

我想强化 OpenBSD 安装。对于这个恕我直言:

sysctl -w kern.wxabort=1

会更安全,默认为 0。

W^X violations are no longer permitted by default.  A kernel log message
is generated, and mprotect/mmap return ENOTSUP.  If the sysctl(8) flag
kern.wxabort is set then a SIGABRT occurs instead, for gdb use or
coredump creation.

所以:

SIGABRT         Abnormal termination
ENOTSUP         Operation not supported (POSIX.1)

所以对我(不是程序员)来说,SIGABRT 可能更好,因为它会终止(?)进程,而不仅仅是信息性消息。从安全的角度来看,杀死行为不良的进程更安全。

问:这是真的吗?使用 SIGABRT 更安全吗? SIGABRT 真的会终止进程吗?或者它们(SIGABRT vs. ENOTSUP)几乎相同并且不会终止进程?

防止操作是您获得安全的地方。杀死进程是奖励惩罚。不过,我们谈论的是过程而不是人,因此没有必要进行惩罚。

问题是您感兴趣的进程是否能够很好地处理错误。如果返回错误代码导致他们出轨并做出不受欢迎的事情,那么您可能需要向他们发送一个信号。或者,如文档所述,如果您想要一个核心转储或想要使用调试器闯入,SIGABRT 会很有用。

请记住,SIGABRT 可能会被捕获。进程可以根据需要忽略信号。

最重要的是,启用此选项并没有真正增加安全性。