如何使用setuid bin访问另一个可执行文件?

时间:2017-10-09 14:08:05

标签: c linux setuid

我有一个C程序获取其名称,将字符串“.script”添加到结尾,然后执行生成的脚本。我的目标是让C可执行文件设置setuid位,并使脚本由有效的uid拥有。但是当我测试它时,它给了我许可被拒绝。我为真实有效的uid添加了一个打印,并且正在设置euid。这两个文件显示为:

-rwsr-xr-x. 1 ts00001 ts00001     8792 Oct  9 08:54 testing
-rwxr-x---. 1 ts00001 ts00001       21 Oct  9 08:15 testing.script

执行程序给了我:

ts00086@rofrpna bin:0 $ ./testing
uid = 223336, euid = 202223
/bin/bash: /usr/local/bin/testing.script: Permission denied
ts00086@rofrpna bin:126 $

那么......我在这里看不到什么意思?

C程序如下:

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>

char ** duplicateArray(char ** input);

int main(int ac, char **av)
{
        int i;
        char script[1024];

        printf("uid = %d, euid = %d\n", getuid(), geteuid());

        realpath(av[0], script);
        strcat(script, ".script");

        printf("script result = %d\n", execv(script, av));
        printf("errno = %d\n", errno);

        return 0;
}

0 个答案:

没有答案