Ao executar scripts de shell que possuem o bit setuid (por exemplo, perms de rwsr-xr-x), os scripts são executados como o usuário que os executa, não como o usuário que os possui. Isso é contrário a como o setuid é tratado para binários (por exemplo, / usr / bin / passwd), que são executados como o usuário que os possui, independentemente de qual usuário os executa.
Verifique esta página: link
Esta é uma medida de segurança tomada pelo sistema operacional. Você deve usar seu script com sudo .
Se você realmente precisa usar o seu script, você pode criar um binário que fará o trabalho. Crie um novo arquivo “program.c” e copie o seguinte código:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
setuid(0);
system("./program.sh");
return 0;
}
Compile e execute o código usando os seguintes comandos:
$ gcc program.c -o program
$ sudo chown root.root program
$ sudo chmod 4755 program
$ ./program
Desta forma, funcionará. O setuid funciona para o arquivo compilado, e este arquivo pode executar outros arquivos como root.