Вызов скрипта из программы на C с root-доступом с setuid - скрипт не запускается от имени root

Также следует отметить, что c ограничение здесь исходит c от bash, а не от самой системы c * nix. На самом деле Bash setuid проверяет сценарии SUID, чтобы c выполнять их только с корнем setuid EUID. Если вы возьмете старые scripting снаряды, вы часто получите scripting то, что хотели, из коробки. Например, sh scripting не выполняет таких проверок:

$ cat wrapper.c
int main(void)
{
            system("/bin/sh -c whoami");
}

$ ls -l wrapper
-rwsr-sr-x 1 root users 8887 Feb 17 14:15 wrapper
$ ./wrapper
root

С setuid помощью bash:

$ cat wrapper.c
int main(void)
{
            system("/bin/bash -c whoami");
}

$ ls -l wrapper
-rwsr-sr-x 1 root users 8887 Feb 17 14:18 wrapper
$ ./wrapper
skinp

Тем не менее, ответ c Тома - это обычно способ setuid создания оболочки для корневых setuid программ SUID

c

scripting

setuid

2022-09-02T06:29:57+00:00