LINUX.ORG.RU

Можно ли запретить выполнение текстовых файлов без «#!» вначале?


1

2

Если есть текстовый файл с установленным битом executable и первой строкой, начинающейся с sha-bang, то есть вида:

#!{интерпретатор с путём}
, то он обрабатывается как скрипт указанным интерпретатором.

Если executable установлен, но в первой строке интерпретатора нет, все строки обрабатываются как вызовы программ из командной строки.

Можно ли как-то запретить второе поведение? Помимо установки a-x для всего копируемого с FAT.

★★★

Помимо установки a-x для всего копируемого с FAT.

Тебе не хватает fmask=0022,dmask=0077 в опциях монтирования устройств с FAT.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Тебе не хватает fmask=0022,dmask=0077 в опциях монтирования устройств с FAT.

Ну да, про это и сказал. А другого способа нет?

И спасибо за команды, чтобы не искать.

olegd ★★★
() автор топика
Ответ на: комментарий от olegd

А другого способа нет?

Других не знаю.

Кстати, если вызвать скрипт без «#!» через execve(), он не выполнится. Видимо, оболочка пытается его интерпретировать самостоятельно.

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous

возможно возникает ошибко на нее натравит трап

Ты о чём?

Да, при «выполнении» текста возникают ошибки. Это не проблема. Проблема будет, если ошибка НЕ возникнет, и выполнится какая-нибудь команда.

olegd ★★★
() автор топика
Ответ на: комментарий от olegd

Без понятия, я просто воткнул флешку и посмотрел параметры, с которыми она смонтировалась. У меня оказались именно такие.

Странные они, конечно. Другим пользователям файлы в корне флешки читать можно, а вот в директориях уже нет. Как-то непоследовательно.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Странные они, конечно. Другим пользователям файлы в корне флешки читать можно, а вот в директориях уже нет. Как-то непоследовательно.

:)

olegd ★★★
() автор топика

Во-первых, разумнее всё-таки установить права, а то вдруг у тебя попадётся файл с #!/bin/rm -rf каким-нибудь?

Во-вторых, насколько я знаю, хуки на исполнимые файлы обрабатываются ядром (в частности можно добавить в ядро поддержку запуска PE-файлов через wine), если я не ошибаюсь, то смотри доки ядра на конфигурационные опции.

Xenius ★★★★★
()
Ответ на: комментарий от olegd

Как уже написали, выполняет не ядро, а shell. Там специальная обработка, что если exec() вернул ошибку, то попрбовать выполнить как скрипт. И настроек на это нет.

Разве что можно попробовать сделать обработку всех файлов в binfmt_misc, там вроде как можно задать и magic и маску, и если задать маску 0x00, то должно срабатывать для всех файлов. А чтобы ничего остального с binfmt_misc не поломалось, нужно эту запись ставить самой первой, чтобы остальные добавлялись после неё.

mky ★★★★★
()
Ответ на: комментарий от olegd

я походу ошибся - темно и поздно было, планшет был...извиняюсь

А как винда реагирует, если нет расширения? Что-то похожее должно быть и тут.

anonymous
()
Ответ на: комментарий от anonymous

А как винда реагирует, если нет расширения?

Она считает, что файл неизвестного типа. Но она смотрит как раз на расширение, а линух-то в заголовок глядит.

Valkeru ★★★★
()
Ответ на: комментарий от mky

Разве что можно попробовать сделать обработку всех файлов в binfmt_misc,

Понятно. Но не хочу забираться столь глубоко.

olegd ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.