1

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

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

这种情况可以按我的预期工作吗?

4

1 回答 1

4

您可以使用特权sudo -u username运行程序。username像这样:

sudo -u youruser yourscript.sh

如果你不能使用sudo,你可以尝试使用以下命令,正如@Torrius 建议的那样:

su - youruser -c "yourscript.sh"

如果您甚至无法使用后一种解决方案,您可以编写一个小型 c 程序,以 parametrized 的权限运行可执行文件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
于 2013-03-05T17:55:01.420 回答