小编Fab*_*ian的帖子

setuid(0) 与 CAP_SETUID

我正在尝试将我的 uid 更改为 0 作为具有该CAP_SETUID功能的非 root 用户。我有以下程序:

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/capability.h>
#include <sys/prctl.h>

int main(int argc, char *argv[])
{
    printf("cap setuid in bset: %d\n", prctl(PR_CAPBSET_READ, CAP_SETUID, 0, 0, 0));
    printf("%s\n", cap_to_text(cap_get_file(argv[0]), NULL));
    printf("%s\n", cap_to_text(cap_get_proc(), NULL));
    printf("uid: %d\n", (int) getuid());
    setresuid(0, 0, 0);
    printf("uid: %d\n", (int) getuid());
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我将 setuid 功能分配如下:

sudo /sbin/setcap cap_setuid=ep ./capsetuid
Run Code Online (Sandbox Code Playgroud)

我得到以下输出

cap setuid in bset: 1
= cap_setuid+ep
=
uid: 1000
uid: 1000
Run Code Online (Sandbox Code Playgroud)

我希望第二个 printf() 也能显示出这种CAP_SETUID能力。不知何故,我的进程没有获得 …

linux privileges linux-capabilities

5
推荐指数
1
解决办法
9502
查看次数

标签 统计

linux ×1

linux-capabilities ×1

privileges ×1