Root daemon->模仿较小的用户 - > fork一个孩子。是子进程用户还是具有一些root权限?

时间:2017-07-14 21:42:06

标签: linux fork setuid

如果我使root权限进程冒充一些较小的用户,并且分叉一个孩子,是否可以安全地假设孩子具有用户权限,而与root无关?我正在使用默认的自定义方法作为用户进行nonosnate并恢复到所有者的信用(root)。它们是抽象的。但通常,这些方法会将进程的整个上下文更改为用户的上下文(可能包括uid,gid等)。

1 个答案:

答案 0 :(得分:1)

fork不会更改流程ID,但exec可以。 exec ing将使用当前有效的uid重写已保存的uid。除非可执行文件是setuid可执行文件,否则有效uid将保持不变,在这种情况下,它将从可执行文件的所有者中复制。

我认为最好使用以下内容:

int print_ids(void)
{
    long ruid, euid, suid;
    getresuid(&ruid, &euid, &suid);
    return printf("%ld %ld %ld\n", ruid, euid, suid);
}

使用不同的场景在不同的上下文中打印uid,以验证它们在哪些上下文中发生变化,以及它们不在哪些上下文中。