mount додає прапор карантину, викликаючи: / bin / bash: неправильний перекладач: Операція не дозволена - але не звичайні підозрювані


8

Гаразд, у мене схожа проблема з: -bash: Applications / mvim: / bin / sh: поганий перекладач: Операція заборонена, але це не та сама проблема. Я отримую той же результат.

Я вже переконався, що це не прапор com.apple.quarantine.

Це не закінчення рядків (сценарій створений саме з vi). Я можу виконати сценарій, використовуючи:

bash simpleshell.sh

Ось результати:

fawkes:tmp kylar$ vi simpleshell.sh
fawkes:tmp kylar$ chmod +x simpleshell.sh 
fawkes:tmp kylar$ ./simpleshell.sh 
-bash: ./simpleshell.sh: /bin/bash: bad interpreter: Operation not permitted
fawkes:tmp kylar$ cat simpleshell.sh 
#!/bin/bash
export FOO=Hey
echo $FOO
fawkes:tmp kylar$ which bash
/bin/bash
fawkes:tmp kylar$ bash simpleshell.sh 
Hey
fawkes:tmp kylar$ xattr -l simpleshell.sh 
fawkes:tmp kylar$ 

ОНОВЛЕННЯ: Я не вірю, що файлова система монтується як noexec. Я спробував запустити скрипт у трьох різних місцях: / tmp, ~ та / source.

UPDATE2: Добре, після більшого копання - я створив сценарій всередині / source, який є встановленим dmg. Ось де я побіг xattr -l і нічого не знайшов. Коли я cp'd сценарій ~ та запустив xattr -l, тоді він мав com.apple.quarantine xattr. Під час перегляду я переглянув атрибути mount для / source та виявив:

/dev/disk1s9 on /Volumes/code (hfs, local, nodev, nosuid, journaled, noowners, quarantine, mounted by kylar)

Тож коли я встановлюю цей dmg, він встановлюється як карантин. Як я можу сказати горі не встановлювати його з прапором карантину? Щойно я видалив прапор у ~, сценарій спрацював нормально.


Якщо ви не отримаєте тут своєї відповіді, розгляньте питання про UNIX та Linux SE.
bot47

Я можу просто
переписати це все одно

Чи можете ви аналогічно запускати інші програми в тій же файловій системі? Це використовує chmod +x file.sh; ./file.sh. Можливо, ця файлова система встановлена ​​прапором "noexec".
см2

2
Можливо, буде корисно переписати своє запитання, щоб запитати лише про те, як сказати монтові не використовувати прапор карантину, оскільки тепер ви визначили, що це ваша справжня проблема. Крім того , я не знаю , як відключити його для конкретного томи, але відключити карантин в цілому, defaults write com.apple.LaunchServices LSQuarantine -bool NO.
houbysoft

2
Гаразд, я це вирішив. У файлі .dmg було встановлено com.apple.quarantine xattr. Мені довелося його відключити, очистити xattr, а потім перезавантажити dmg. GAH. @houbysoft: дякую за пораду щодо повного вимкнення.
Кілар

Відповіді:


1

Сценарій виконувався всередині .dmg, на якому було встановлено прапор карантину. Коли .dmg був встановлений, він монтував його за допомогою карантинного прапора, який передається у спадок, але не відображається. Я відключив .dmg, зняв прапор карантину і знову встановив його, і все було добре.


Дякую за це. У мене була подібна проблема, і це мене зводило з розуму: сценарій Perl, створений Vim (або навіть кіт), без карантинного xattr, пов'язаного з ним. Однак сценарій знаходився в змонтованому розрідженому пакеті. Прочитавши цю сторінку, я відключив файлову систему і заглянув всередину пакету: Там був файл з назвою "токен", у якому встановлено xattr "com.apple.quarantine". Після того, як я видалив xattr і перепрограмував файлову систему розрідженого пакета, моя проблема "поганого перекладача" зі скриптом Perl пішла з ладу.
Лі Джонсон

0

У мене просте рішення: cat configure.sh> test.sh потім запустіть test.sh.

Виявляється проблемою редактора: https://discussions.apple.com/thread/3733470?start=30&tstart=0


Ні, це не рішення для моєї ситуації. Коли читається питання, я використовував vi для створення сценаріїв. Це цікаве посилання, хоча.
Kylar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.