Я создаю сценарий тестовой оболочки в своей папке Desktop, делаю его исполняемым, и он работает нормально. Я копирую его на смонтированный чип SD, и атрибуты меняются, а выполнение не выполняется.

Вот тестовый пример. Обратите внимание, что командная строка является рабочим каталогом. Это было немного отредактировано (добавлены пустые строки и удалены некоторые подсказки) для ясности.

Я не понимаю, почему атрибуты меняются и почему скрипт не работает.

## print file test.sh contents
Desktop>>  cat test.sh    
#!/bin/bash                    
echo 'Works OK'
Desktop>>

## list file attributes to verify it is executable. 
##Note attributes. They change after file copy.
Desktop>>  ls -al test.sh                           
-rwxr-xr-x. 1 ron ron 28 Feb 16 13:41 test.sh       
Desktop>>

## run the shell
## shell output is correct.
Desktop>>  ./test.sh                                
Works OK 
Desktop>>

## copy shell to SD chip
Desktop>>  cp test.sh /media/removable/10-EDC/org   
Desktop>>

## change to SD chip 
Desktop>>  cd /media/removable/10-EDC/org
org>>

##list file attributes. Note that they have changed.
## org>>  ls -al test.sh                               
-rwxrwxrwx. 1 ron ron 28 Feb 16 14:58 test.sh
org>>

## run the shell. Fails.
org>>  ./test.sh                                    
bash: ./test.sh: Permission denied
org>> 

ОС Ubuntu 16.04.

Было высказано предположение, что это может быть связано с тем, как был отформатирован чип SD. Я считаю, что это отформатировано как MSDOS (жир ??) для совместимости с другими машинами. У меня нет опыта в этой области (вопросы форматирования).

Любая помощь приветствуется.

1 ответ1

1

Это зависит от того, как смонтирована SD-карта. Опция монтирования - "noexec", которая запрещает выполнение всего на подключенном устройстве. Поэтому, пожалуйста, проверьте параметры монтирования, используя mount (без параметров)(mount | grep media может ограничить вывод на вашу SD-карту).

И да, если устройство отформатировано для VFAT (как обычно для SD-карт, если они не предназначены для Raspberry), оно не будет поддерживать флаги доступа Пользователь / Группа / Другие, а не флаг Exec, поэтому способ их обработки направлено опциями монтирования.

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