Мне нужно запустить bash script как root (без пароля sudo или su v жизнеспособно), и поскольку вы не можете установить script в Linux, я подумал о том, чтобы вызвать его из исполняемого файла и сделать его setuid:
$ cat wrapper.c
int main(void)
{
system("/bin/bash ./should_run_as_root.sh");
}
$ gcc -o wrapper wrapper.c
$ sudo chown root wrapper
$ sudo chmod ug+s wrapper
$ ll wrapper
-rwsr-sr-x 1 root users 6667 2009-02-17 11:11 wrapper
$
Это работает - как при правильном выполнении script, но script работает как пользователь, который выполняет "./wrapper".
Почему? И как правильно это реализовать?
Спасибо!