【发布时间】:2017-10-24 02:11:39
【问题描述】:
我需要知道是否可以在可加载内核模块中拦截用户执行的命令。我知道系统调用可以被拦截,例如 open()。但我需要做的是拦截用户输入的命令/进程并添加一些验证。例如,如果用户输入 cp 命令,在执行命令之前我需要对其执行一些验证。如果我们不能在 LKM 中做到这一点,还有哪些替代方法?
【问题讨论】:
标签: c linux linux-kernel
我需要知道是否可以在可加载内核模块中拦截用户执行的命令。我知道系统调用可以被拦截,例如 open()。但我需要做的是拦截用户输入的命令/进程并添加一些验证。例如,如果用户输入 cp 命令,在执行命令之前我需要对其执行一些验证。如果我们不能在 LKM 中做到这一点,还有哪些替代方法?
【问题讨论】:
标签: c linux linux-kernel
您需要查看execvp() 和朋友有多少实际系统调用(可能是 1,也可能是 2 — 可能更多,但可能不是),然后拦截这些系统调用。您可能还需要担心posix_spawn() 和朋友。它们是运行新流程的唯一方式。没有其他方法可以拦截它们。
【讨论】: