C 截取linux中执行的命令

C 截取linux中执行的命令,c,linux,linux-kernel,C,Linux,Linux Kernel,我需要知道是否有可能在可加载内核模块中截获用户执行的命令。我知道系统调用可以被截获,比如open()。但我需要做的是截取用户输入的命令/进程,并添加一些验证。例如,如果用户输入cp命令,在执行该命令之前,我需要对其执行一些验证。如果我们不能在LKM中做到这一点,有哪些替代方法 您需要查找和朋友的实际系统调用数量(可能是1个,可能是2个-可能更多,但可能不是),然后拦截这些系统调用。你可能也需要担心你的朋友和朋友。它们是运行新流程的唯一方式。没有任何其他方法可以拦截它们。您需要查找有多少实际的系统

我需要知道是否有可能在可加载内核模块中截获用户执行的命令。我知道系统调用可以被截获,比如open()。但我需要做的是截取用户输入的命令/进程,并添加一些验证。例如,如果用户输入cp命令,在执行该命令之前,我需要对其执行一些验证。如果我们不能在LKM中做到这一点,有哪些替代方法

您需要查找和朋友的实际系统调用数量(可能是1个,可能是2个-可能更多,但可能不是),然后拦截这些系统调用。你可能也需要担心你的朋友和朋友。它们是运行新流程的唯一方式。没有任何其他方法可以拦截它们。

您需要查找有多少实际的系统调用用于和朋友(可能是1个,可能是2个-可能更多,但可能不是),然后拦截这些系统调用。你可能也需要担心你的朋友和朋友。它们是运行新流程的唯一方式。没有其他方法可以拦截它们。

您可以尝试使用LKM或systemtap插件(编译成LKM)。应该钩住的内核函数是和。如果您这样做是为了编程的乐趣,并且希望自己编写挂钩代码,那么您可能希望了解并知道您可以从
/proc/kallsyms
获取内核函数地址

当然,如果可能的话,用自己的挂钩代码重新编译内核是另一种选择

在上述两种情况下,您可能希望拦截特定uid发出的Exeve调用;如果是这样,您应该过滤来自该uid的调用


用户空间方法可能是尝试编写一个seccomp过滤器。是一个关于如何编写的教程。

您可以尝试使用LKM或systemtap插件(编译成LKM)。应该钩住的内核函数是和。如果您这样做是为了编程的乐趣,并且希望自己编写挂钩代码,那么您可能希望了解并知道您可以从
/proc/kallsyms
获取内核函数地址

当然,如果可能的话,用自己的挂钩代码重新编译内核是另一种选择

在上述两种情况下,您可能希望拦截特定uid发出的Exeve调用;如果是这样,您应该过滤来自该uid的调用


用户空间方法可能是尝试编写一个seccomp过滤器。这是一个关于如何着手编写的教程。

thnx@Jonnathan Leffler,但我仍然不明白这一点。为了检查有多少系统调用,还需要拦截当前进程对吗?Hothnx@Jonnathan Leffler,但我还是不明白。为了检查有多少系统调用,还需要拦截当前进程对吗?霍