LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 791|回复: 0

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

[复制链接]
发表于 2006-3-29 19:33:27 | 显示全部楼层 |阅读模式
我需要对某个特定的进程限制某些系统调用。
虽然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号?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表