Не удается выполнить скрипт на подключенном внешнем диске


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 $ 

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

Ответы:


22

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

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

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



3

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.