Если я понимаю, что вы хотите сделать, вы пытаетесь сделать так, чтобы непривилегированный пользователь мог выполнять привилегированное действие без аутентификации?
Сценарии оболочки setuid считаются гигантской угрозой безопасности, поэтому ядро не разрешает их использовать. Однако если вы хотите написать отдельную исполняемую программу, вы можете установить для нее биты set-user-ID-on-execute или set-group-ID-on-execute и получить желаемое поведение. Будьте осторожны, теперь вы находитесь в стране больших потенциальных проблем с безопасностью ...
man chmod для получения дополнительной информации.
Вот быстрый и грязный пример:
$ echo "Hello, world!" > file
$ sudo chown root file
$ sudo chmod 600 file
$ cat file
cat: file: Permission denied
Но я могу написать программу:
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
setuid(0);
system("cat file");
return 0;
}
Что может делать то, что мы хотели бы:
$ cc -Wall -o app main.c
$ chown root app
$ chmod 4755 app
$ ./app
Hello, world!