mount dodaje flagę kwarantanny, powodując: / bin / bash: zły interpreter: Operacja niedozwolona - ale nie zwykli podejrzani

8

OK, mam podobny problem do: -bash: Aplikacje / mvim: / bin / sh: zły interpreter: Operacja niedozwolona - ale to nie ten sam problem. Otrzymuję ten sam wynik.

Już sprawdziłem, że nie jest to flaga com.apple.quarantine.

To nie są zakończenia linii (skrypt został stworzony właśnie z vi). Mogę wykonać skrypt, używając:

bash simpleshell.sh

Oto wyniki:

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$ 

AKTUALIZACJA: Nie sądzę, że system plików jest montowany jako noexec. Próbowałem uruchomić skrypt w 3 różnych miejscach: / tmp, ~ i / source.

UPDATE2: Ok, po dalszych kopaniach - stworzyłem skrypt wewnątrz / source, który jest zamontowanym dmg. Tam właśnie uruchomiłem xattr -l i nic nie znalazłem. Kiedy wykonałem skrypt do ~ i uruchomiłem xattr -l, wtedy miał xattr com.apple.quarantine. Podczas przeczucia spojrzałem na atrybuty montowania dla / source i znalazłem:

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

Więc kiedy montuję ten dmg, ustawia się go jako kwarantannę. Jak mogę powiedzieć mountowi, aby nie montował go za pomocą flagi kwarantanny? Po usunięciu flagi w ~ skrypt działał poprawnie.

Kylar
źródło
Jeśli nie otrzymasz tutaj odpowiedzi, zastanów się nad pytaniem w systemach UNIX i Linux SE.
bot47
W każdym razie mogę po prostu wysłać to pocztą - to w zasadzie blokuje mnie przed wykonaniem jakiejkolwiek pracy :(
Kylar,
Czy możesz uruchomić inne programy w tym samym systemie plików w podobny sposób? To używa chmod +x file.sh; ./file.sh. Być może ten system plików jest zamontowany z flagą „noexec”.
cm2
2
Pomocne może być przepisanie pytania, aby zapytać tylko, jak powiedzieć mountowi, aby nie używał flagi kwarantanny, ponieważ teraz ustaliłeś, że to był twój rzeczywisty problem. Również nie wiem jak wyłączyć go dla określonej objętości, ale aby wyłączyć kwarantanny sumie defaults write com.apple.LaunchServices LSQuarantine -bool NO.
houbysoft
2
OK, rozwiązałem to. W pliku .dmg ustawiono wartość com.apple.quarantine xattr. Musiałem to odmontować, wyczyścić xattr, a następnie ponownie zamontować dmg. GAH. @houbysoft: dziękuję za wskazówkę dotyczącą całkowitego wyłączenia.
Kylar,

Odpowiedzi:

1

Skrypt był uruchamiany z wnętrza pliku .dmg z ustawioną flagą kwarantanny. Kiedy .dmg został zamontowany, montował go za pomocą flagi kwarantanny, która jest dziedziczona, ale nie pojawia się. Odmontowałem .dmg, usunąłem flagę kwarantanny i ponownie ją zamontowałem i wszystko było w porządku.

Kylar
źródło
Dziękuję Ci za to. Miałem podobny problem i doprowadzało mnie to do szału: skrypt Perla, stworzony przez Vima (lub nawet kota), bez powiązanego z nim kwarantanny xattr. Jednak skrypt znajdował się w zamontowanym rzadkim pakiecie. Po przeczytaniu tej strony odmontowałem system plików i zajrzałem do pakietu: tam był plik o nazwie „token”, który miał zestaw xattr „com.apple.quarantine”. Kiedy usunąłem xattr i ponownie zamontowałem rzadki system plików pakietu, mój problem z „złym interpreterem” ze skryptem Perla zniknął.
Lee Johnson
0

Mam proste rozwiązanie: cat configure.sh> test.sh, a następnie uruchom test.sh.

Okazuje się, że jest to problem edytora: https://discussions.apple.com/thread/3733470?start=30&tstart=0

sihong xie
źródło
Nie, to nie jest rozwiązanie dla mojej sytuacji. Jak brzmi pytanie, do tworzenia skryptów używałem vi. To interesujące łącze.
Kylar,