+ -
当前位置:首页 → 问答吧 → 需要对某个特定的进程限制系统调用,有些问题想请教。

需要对某个特定的进程限制系统调用,有些问题想请教。

时间:2006-03-29

来源:互联网

我需要对某个特定的进程限制某些系统调用。
虽然strace可以实现这点,但是考虑到strace可能会影响性能,想通过修改内核实现。
我想把那些受到限制的进程都用某个特定的用户(uid)运行,内核系统调用的入口进行判断,如果是该uid则做相应的限制。

具体想更改的内核代码如下:

ENTRY(system_call)
pushl %eax # save orig_eax
SAVE_ALL
GET_THREAD_INFO(%ebp)
# system call tracing in operation / emulation
/* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */
testw $(_TIF_SYSCALL_EMU|_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT),TI_flags(%ebp)
jnz syscall_trace_entry
cmpl $(nr_syscalls), %eax
jae syscall_badsys



/*
我想在此处增加一个判断,首先获得该进程的uid号,如果不是特定的uid则转入syscall_call继续运行。否则,判断是否为合法的系统调用,如果不合法则转入syscall_badsys,合法的系统调用则继续进入syscall_call。

*/

syscall_call:
call *sys_call_table(,%eax,4)
movl %eax,EAX(%esp) # store the return value








请问我添加代码的地方和思路是否正确?
如何才能得到该进程的uid号?

作者: flyingdog   发布时间: 2006-03-29