Дарвин удаляет setuid из интерпретатора при выполнении hash bang

Это хеш, реализованный в bash, я полагаю?

hash -t требует аргумента, потому что это запрос хешированного местоположения одной или нескольких утилит:

$ hash -t ls
/bin/ls

$ hash -t ls man
ls      /bin/ls
man     /usr/bin/man

Как сказано в тексте справки:

вывести запомненное местоположение каждого ИМЯ, предшествующего каждое место с соответствующим ИМЯ, если несколько ИМЕНА даны

Чтобы показать все хешированные утилиты, используйте хеш без каких-либо аргументов:

$ hash
hits    command
   1    /usr/bin/man
   2    /bin/ls

Опять же, как сказано в тексте справки:

Если аргументы не задаются, отображается информация о запомненных командах.

1
06.05.2016, 07:15
1 ответ

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 "$@"
0
28.01.2020, 01:19

Теги

Похожие вопросы