我从 Linux 根控制台运行 bash 脚本。所以这个脚本运行一个具有 root 权限的应用程序。
但我需要一个应用程序作为用户调用。
这种情况可以按我的预期工作吗?
我从 Linux 根控制台运行 bash 脚本。所以这个脚本运行一个具有 root 权限的应用程序。
但我需要一个应用程序作为用户调用。
这种情况可以按我的预期工作吗?
您可以使用特权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