suid bit está desativado para scripts na maioria das distribuições linux e unix porque abre várias falhas de segurança.
No entanto, comandos nativos e executáveis binários podem ser usados com suid bit .
Como experiência de brincar com o bit suid, tentei escrever um script para executar apt-get update a partir de um script bash e, em seguida, definir o bit suid nele para que eu pudesse executar ~/update ou algo assim.
apt-get update poderia ser qualquer coisa aqui - algum programa que escuta em um soquete privilegiado, ou grava em / ou qualquer outra coisa que tenha que ser executada como root. Por favor, não use apt-get update aqui.
A primeira tentativa é esta, que não funcionou, falhando com can't get lock, are you root? . O motivo parece ser Setuid bit parece não ter efeito sobre o bash .
#!/bin/bash
apt-get update
Então, pensei em tentar ignorar o shell, mas isso também não funcionou, pelo mesmo motivo.
#!/usr/bin/perl
system("apt-get", "update").
Eu tenho as permissões corretas (afaik) - sudo chmod 4755 ~/update .
Eu entendi mal o setuid ou estou apenas sentindo falta de algo simples?
suid bit está desativado para scripts na maioria das distribuições linux e unix porque abre várias falhas de segurança.
No entanto, comandos nativos e executáveis binários podem ser usados com suid bit .
para que isso funcione, tente
cp /bin/bash /bin/mybash
chmod 4755 /bin/mybash
e use /bin/mybash como shebang ( #!/bin/mybash na primeira linha) para o seu script.
você deve evitar isso nos sistemas de produção.