1

我试图/home/xytao/safe通过将模块添加到该钩子的内核来隐藏文件夹stat,但是当我返回-2(ENOENT,没有这样的文件或目录)时,我仍然可以使用cd /home/xytao/safe进入该文件夹。

这是我的模块

asmlinkage long fake_stat(const char __user *filename, struct __old_kernel_stat __user *statbuf)
{
    if (!strncmp(filename,"/home/xytao/safe",16))
    {   
        return -2;
    }
    return real_stat(filename,statbuf);
}

使用strace bash -c "cd /home/xytao/safe",我可以看到返回值已经改变,这意味着这个模块加载正常,但它仍然成功进入文件夹。这是 strace 输出的一部分:

...
stat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/home/xytao", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/home/xytao/safe", 0x7ffd5104fd40) = -1 ENOENT (No such file or directory)
chdir("/home/xytao/safe")               = 0
brk(0x1e66000)                          = 0x1e66000
getcwd("/home/xytao/safe", 4096)        = 17
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
exit_group(0)                           = ?
+++ exited with 0 +++

这是否意味着我也需要上钩chdir

4

0 回答 0