Die meisten Unix-Varianten deaktivieren setuid auf Skripten aus Sicherheitsgründen. Weitere Informationen finden Sie unter Setuid für Shell-Skripte zulassen
Frühere Versionen von OS X hatten eine Einstellung zum Zulassen von setuid-Skripten: sysctl kernl.sugid_scripts=1
, aber Ich sehe es nicht dokumentiert auf 10.9. Ich weiß nicht, ob es noch existiert, aber nicht dokumentiert ist, und wenn es noch existiert, weiß ich nicht, ob es sicher ist.
Der übliche Weg, ein setuid-Skript auszuführen, ist über sudo
, das sich um einige der Sicherheitsprobleme mit setuid-Skripten kümmert, insbesondere die Bereinigung der Umgebung. Fügen Sie eine sudo-Regel hinzu (führen Sie visudo
aus, um die sudo-Konfiguration zu bearbeiten):
ALL ALL = (target_user : target_group) /path/to/script
Dies ermöglicht es jedem, sudo -u target_user -g target_group /path/to/script auszuführen ...
(с любыми аргументами). Замените первый ALL
на %original_group
, чтобы разрешить это делать только членам origininal_group
.
Если вы хотите, чтобы это было прозрачно, напишите сценарий-оболочку, который вызывает sudo
по желанию:
#!/bin/sh
exec sudo -u target_user -g target_group /path/to/script "$@"