2

Я запускаю скрипт на плате целевой мишени как суперпользователь, то есть как пользователь root. Но скрипт не выполняется, если я запускаю его со следующим синтаксисом

root@freescale$ ./Script.sh 
-sh: ./Script.sh: Permission denied

Я уже дал права на чтение и выполнение (+rx) с помощью команды chmod. При выполнении команды "ls -l" я получаю следующие атрибуты

root@freescale$ ls -l | grep Script.sh
-rw-rw-rw-    1 root     root          362 Jul  2 08:47 Script.sh

"x" отсутствует в столбце атрибутов файла, тогда как команда chmod выполнена успешно. С другой стороны, этот скрипт запускается, когда я запускаю его как

root@freescale$ sh Script.sh 

Может ли кто-нибудь помочь мне ответить на эту ситуацию?

3 ответа3

1

Ваш скрипт не имеет прав на выполнение ни для кого. Пытаться:

chmod u+x Script.sh

и владелец файла должен иметь возможность начать его с./Script.sh

Так же,

chmod g+x Script.sh
chmod o+x Script.sh

работать, если вы хотите, чтобы группе (g) или кому-либо (o) было разрешено выполнить его.

1

даже если ваш "chmod" возвращает успех, бит выполнения не включается, как показывает "ls", поэтому я пришел к выводу, что что-то прозрачно мешает вам изменить файловый режим в файловой системе.

что показывает "lsattr Script.sh"?

Вы можете поместить скрипт в ramdrive или другую файловую систему на том же хосте и попробовать еще раз?

0

Файл должен быть "исполняемым", чтобы его можно было использовать с помощью ./Script.sh .

Используйте chmod +x Script.sh чтобы добавить флаг "выполнить" для этого файла.

РЕДАКТИРОВАТЬ

Извините, я пропустил важную деталь в вашем посте, вы уже сделали это, но не сработало ... попробуйте снова выполнить chmod , а затем сразу же выполнить echo $? чтобы получить статус выхода, это может помочь.

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