Nunca defina o bit SUID em scripts de shell

Por causa de uma falha fundamental com a implementação UNIX de scripts de shell e SUID, você não pode executar scripts de shell SUID de uma maneira completamente segura em sistemas que não suportam o dispositivo / dev / fd. Essa falha surge porque a execução de um script de shell no UNIX envolve um processo de duas etapas: quando o kernel determina que um script de shell está prestes a ser executado, ele primeiro inicia uma cópia SUID do interpretador de shell e, em seguida, o interpretador de shell começa a executar o script de shell. Como essas duas operações são realizadas em duas etapas distintas, você pode interromper o kernel após a primeira etapa e alternar o arquivo que o interpretador de shell está prestes a executar. Dessa forma, um invasor pode fazer com que o computador execute qualquer script de shell de sua escolha, o que essencialmente concede ao invasor privilégios de superusuário.

Referência: http://docstore.mik.ua/orelly/networking/puis/ch05_05.htm