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 "$@"