Отключаемый she-bang в Linux-3.10
Опубликовано 02.07.2013
В списке новшеств свежевышедшего Linux 3.10 меня заинтересовала строчка:
Функциональность запуска скриптов, содержащих путь к интерпретатору в заголовке «#!», теперь может быть собрана в виде модуля ядра, что позволяет легко запретить выполнение скриптов как программ.
Воображение быстро нарисовало переменные ядра, в которые можно записать пути к разрешенным и запрещенным интерпретаторам, еще переменные, позволяющие расширенно настраивать парсинг аргументов… Всё оказалось гораздо проще.
С момента вынесения функциональности по парсингу she-bang из fs/exec.c в отдельный модуль fs/binfmt_script.c в linux-1.3.71 в fs/Makefile вплоть до недавнего времени было написано следующее:
# binfmt_script is always there BINFMTS += binfmt_script.o
Было это в 1996 году.
И только в 2013 году, в эпоху бурного развития встроенных систем, кому-то наконец понадобилось отключать поддержку выполнения внешних (по отношению к ядру) скриптов. Весь коммит, реализующий это, фактически только добавляет одну опцию в menuconfig и ничего больше.
И никаких sysctl’ов.