A maioria das variantes Unix desabilita o setuid em scripts por motivos de segurança. Para obter mais informações, consulte Permitir o setuid em scripts de shell
Versões anteriores do OS X tinham uma configuração para permitir scripts setuid: sysctl kernl.sugid_scripts=1 , mas Não vejo isso documentado em 10.9 . Não sei se ainda existe, mas não está documentado e, se ainda existir, não sei se é seguro.
A maneira usual de executar um script setuid é através de sudo , que cuida de alguns dos problemas de segurança com scripts setuid, em particular, sanitizando o ambiente. Adicione uma regra sudo (execute visudo para editar a configuração do sudo):
ALL ALL = (target_user : target_group) /path/to/script
Isso permite que qualquer pessoa execute sudo -u target_user -g target_group /path/to/script … (com qualquer argumento). Substitua o primeiro ALL por %original_group para permitir que apenas os membros de origininal_group façam isso.
Se você quiser que isso seja transparente, escreva um script de wrapper que invoque sudo como desejado:
#!/bin/sh
exec sudo -u target_user -g target_group /path/to/script "$@"