我从Linux root控制台运行bash脚本。 所以这个脚本运行一个具有root权限的应用程序。
但是我需要一个应用程序作为用户调用。
这种情况能否像我预期的那样发挥作用?
答案 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