23

/ Mnt / ext монтируется в файловую систему ext2, внешний жесткий диск. По какой-то причине я не могу запускать сценарии оттуда. Пожалуйста, смотрите сессию ниже.

luntain@plato /mnt/ext $ echo "echo success" > k.sh
luntain@plato /mnt/ext $ chmod 777 k.sh
luntain@plato /mnt/ext $ ./k.sh
-bash: ./k.sh: Permission denied
126luntain@plato /mnt/ext $ ll k.sh
-rwxrwxrwx 1 luntain luntain 13 Jan 23 15:08 k.sh*
luntain@plato /mnt/ext $ 

Я хотел бы узнать, почему я вижу ошибку.

3 ответа3

22

Вероятно, при монтировании файловой системы был установлен атрибут noexec ; может быть, это ваш дистрибутив "особенность".

Чтобы проверить это, вы можете выполнить команду mount , которая покажет параметры монтирования в скобках, а для удаления флага noexec вы можете использовать mount -o remount,exec /mnt/ext под root.

Кроме того, убедитесь, что вы указали опцию exec после пользовательской опции, иначе система все равно будет монтировать ваш диск как noexec.

3

Монтируемый в файловой системе noexec только предотвращает выполнение сценария (то есть, запрашивает ядро выполнить его надлежащим образом на основе магического числа или строки Шебанга). Это не мешает вам вызывать интерпретатор в другой исполняемой файловой системе exec и передавать скрипт в качестве аргумента (или в stdin) указанному интерпретатору. Ergo, если бы не root, вы могли бы обойти это просто sh k.sh

3

Файловая система монтируется с опцией noexec.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .