如何使用root控制台的用户权限运行应用程序

时间:2013-03-05 17:51:15

标签: linux console privileges

我从Linux root控制台运行bash脚本。 所以这个脚本运行一个具有root权限的应用程序。

但是我需要一个应用程序作为用户调用。

这种情况能否像我预期的那样发挥作用?

1 个答案:

答案 0 :(得分:4)

使用sudo -u username,您可以运行具有username权限的程序。像这样:

sudo -u youruser yourscript.sh

如果您无法使用sudo,可以尝试使用followind命令,如@Torrius建议:

su - youruser -c "yourscript.sh"

如果您甚至无法使用后一种解决方案,您可以编写一个小型c程序,该程序运行具有参数化user and group id特权的可执行文件。

看看这个概念代码:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[]) {

    if (argc < 3)
    {
        printf("Usage: ./this [uid] [gid]\n");
        return 1;
    }

    setuid(atol(argv[1]));
    setgid(atol(argv[2]));

    execl("/usr/bin/whoami", "whoami", 0, 0);

    return 0;
}

测试它:

myshell:~ root$ ./a.out 501 501
davide

myshell:~ root$ ./a.out -2 -2
nobody

myshell:~ root$ ./a.out 1 1
daemon