Я установил Debian в VirtualBox (для различных экспериментов, которые обычно ломали мою систему) и попытался запустить скрипт гостевого аддона VirtualBox. Я вошел в систему как root и попытался запустить autorun.sh
, но я получил «Permission denied». ls -l
показывает, что скрипт имеет права на выполнение.
Извините, что я не могу скопировать вывод - VirtualBox абсолютно бесполезен без надстройки, так как не работает ни общий каталог, ни общий буфер обмена. Но только для вас, чтобы быть уверенным, я скопировал права руками:
#ls -l ./autorun.sh
-r-xr-xr-x 1 root root 6966 Mar 26 13:56 ./autorun.sh
Сначала я подумал, что, возможно, скрипт выполняет что-то, что выдало ошибку. Я пытался заменить /bin/sh
что-то вроде #/pathtorealsh/sh -xv
, но я не получил вывод - кажется, что сценарий даже не может быть выполнен.
Я даже не представляю, чем это может быть вызвано.
источник
mount | grep noexec
?noexec
набор. Возможно, вы можете опубликовать это как ответ; тем временем я пытаюсь перемонтировать его с правами exec. Хм, я даже не знал, что файловая система может иметь такой атрибут.sh ./autorun.sh
что произойдет?Ответы:
Возможно, ваша файловая система смонтирована с установленным
noexec
параметром, поэтому вы не можете запускать исполняемые файлы. Из документации по креплению :Пытаться:
Затем проверьте, указана ли ваша файловая система в выходных данных.
Если да, вы можете решить эту проблему, перемонтировав файловую систему с
exec
опцией:источник
noexec
: "sh: 75: script.sh: Вbash -x ./filename.filetype
должно сработать. Это сработало для меня, когда я получил разрешение как пользователь root.источник
noexec
опции монтирования, это не сработает, потому что может быть больше файлов, которые должны быть выполнены; т. е. онfilename.filetype
бы задохнулся, пытаясь выполнить другие файлы из той же файловой системы. Вы можете легко проверить это с помощью упрощенного теста: создайте двухстрочный скрипт, который печатает «привет», затем просто снова вызывает себя, но не устанавливает права на исполняемый файл. Если вы выполните его с помощью-x
, он напечатает «привет», но тогда рекурсивная строка вызова вызовет ошибку.Мое решение этой проблемы заключается в использовании источника . Я был на хранении очень важных данных. Этот том монтируется как noexec. У меня есть простой сценарий оболочки, который является исполняемым, но получил проблемы с правами доступа.
Проверено только на моей Ubuntu.
источник