Страница 1 из 1

Исполнение скриптов без флага исполнения

Добавлено: 18 мар 2021, 08:28
Dja
demonlibra писал(а):
18 мар 2021, 06:22
Dja писал(а):
17 мар 2021, 22:58
demonlibra писал(а):
05 мар 2021, 19:12
Поправьте меня, если я не прав, но разве эти два варианта не эквиваленты?

Код: Выделить всё

chmod +x "имя_сценария"
sudo ./"имя_сценария" "откуда" "куда"

Код: Выделить всё

sudo bash "имя_сценария" "откуда" "куда"
Емнип нет. Ведь как он будет выполнять неисполнение?
Вариант ./file.sh подходит в случае, если в первой строке скрипта указан интерпретатор.
Вариант sudo bash file.sh запускает скрипт через даш игнорируя первую строку.
Но и в первом и во втором случаях скрипты должны быть с флагом +х
создал сценарий test.sh
НЕ назначил флаг +x
и запустил командой bash test.sh
работает

В чём подвох?

Код: Выделить всё

~$ ls -l test.sh
-rw-rw-r-- 1 demonlibra demonlibra 8 мар 18 08:19 test.sh
~$ cat test.sh
echo 123
~$ bash test.sh
123
Вот и собственно да... В чем подвох? :wacko2:

Исполнение скриптов без флага исполнения

Добавлено: 18 мар 2021, 08:35
Chocobo
Dja, все просто.
вызывая явно bash - ты можешь скормить ему любой файл. исполняемой командой является bash, а скрипт это аргумент к ней.
без указания bash обращаясь к файлу - уже как раз пытаешься исполнить сам файл, и без флага исполнения он тебя пошлет.


Просто с башем не самый удачный пример. интерпретатору можно скармливать сценарии и это нормально)
Возьми любой бинарный файл. У него не будет такого варианта запустить без прав сквозь какую-то команду

Исполнение скриптов без флага исполнения

Добавлено: 18 мар 2021, 08:43
Dja
Chocobo писал(а):
18 мар 2021, 08:35
аргумент
Весомый! :thumbs: :read: