mount fügt ein Quarantäne-Flag hinzu, was Folgendes verursacht: / bin / bash: schlechter Interpreter: Operation nicht zulässig - aber nicht die üblichen Verdächtigen

8

OK, ich habe ein ähnliches Problem wie: -bash: Applications / mvim: / bin / sh: schlechter Interpreter: Operation nicht erlaubt - aber es ist nicht dasselbe Problem. Ich bekomme das gleiche Ergebnis.

Ich habe bereits überprüft, dass es sich nicht um das com.apple.quarantine-Flag handelt.

Es sind nicht die Zeilenenden (das Skript wurde nur aus vi erstellt). Ich kann das Skript ausführen mit:

bash simpleshell.sh

Hier sind die Ergebnisse:

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$ 

UPDATE: Ich glaube nicht, dass das Dateisystem als noexec gemountet wird. Ich habe versucht, das Skript an drei verschiedenen Stellen auszuführen: / tmp, ~ und / source.

UPDATE2: Ok, nach mehr Graben - ich habe das Skript in / source erstellt, das ein gemountetes dmg ist. Dort habe ich xattr -l ausgeführt und nichts gefunden. Als ich das Skript auf ~ kopierte und xattr -l ausführte, hatte es das com.apple.quarantine xattr. Ich habe mir die Mount-Attribute für / source angesehen und festgestellt:

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

Wenn ich dieses dmg einbinde, wird es als Quarantäne festgelegt. Wie kann ich mount anweisen, es nicht mit der Quarantäneflagge zu mounten? Nachdem ich das Flag in ~ entfernt hatte, lief das Skript einwandfrei.

Kylar
quelle
Wenn Sie hier keine Antwort erhalten, fragen Sie unter UNIX und Linux SE nach.
Max Ried
Ich kann es sowieso nur überkreuzen - das hindert mich im Grunde daran, irgendwelche Arbeiten zu erledigen :(
Kylar
Können Sie andere Programme auf ähnliche Weise auf demselben Dateisystem ausführen? Das nutzt chmod +x file.sh; ./file.sh. Möglicherweise ist das Dateisystem mit dem Flag "noexec" versehen.
cm2
2
Es kann hilfreich sein, Ihre Frage neu zu schreiben, um nur zu fragen, wie Sie mount anweisen sollen, das Quarantäne-Flag nicht zu verwenden, da Sie jetzt festgestellt haben, dass dies Ihr eigentliches Problem war. Außerdem weiß ich nicht, wie ich es für ein bestimmtes Volume deaktivieren soll, sondern um die Quarantäne insgesamt zu deaktivieren defaults write com.apple.LaunchServices LSQuarantine -bool NO.
Houbysoft
2
OK, ich habe es gelöst. In der .dmg-Datei wurde ein xattr für com.apple.quarantine festgelegt. Ich musste es aushängen, das xattr löschen und dann das dmg wieder einbauen. GAH. @houbysoft: Danke für den Tipp, es komplett auszuschalten.
Kylar

Antworten:

1

Das Skript wurde in einer .dmg ausgeführt, auf der das Quarantäne-Flag gesetzt war. Wenn die .dmg-Datei bereitgestellt wurde, wurde sie mit einem Quarantäne-Flag bereitgestellt, das vererbt wird, aber nicht angezeigt wird. Ich habe die .dmg abmontiert, die Quarantäneflagge entfernt und wieder montiert, und alles war gut.

Kylar
quelle
Danke dafür. Ich hatte ein ähnliches Problem und es machte mich verrückt: Ein Perl-Skript, das von Vim (oder sogar cat) erstellt wurde und mit dem kein Quarantäne-Xattr verbunden ist. Das Skript befand sich jedoch in einem bereitgestellten, spärlichen Bundle. Nachdem ich diese Seite gelesen hatte, löste ich das Dateisystem und schaute in das Bundle: Dort befand sich eine Datei mit dem Namen "token", für die xattr "com.apple.quarantine" festgelegt war. Nachdem ich das xattr gelöscht und das Sparse-Bundle-Dateisystem erneut bereitgestellt hatte, verschwand mein Problem mit dem "schlechten Interpreter" mit dem Perl-Skript.
Lee Johnson
0

Ich habe eine einfache Lösung: cat configure.sh> test.sh und dann test.sh ausführen.

Es stellt sich heraus, dass es sich um ein Editorproblem handelt: https://discussions.apple.com/thread/3733470?start=30&tstart=0

Sihong Xie
quelle
Nein, es ist keine Lösung für meine Situation. Während die Frage lautet, habe ich vi verwendet, um die Skripte zu erstellen. Das ist allerdings ein interessanter Link.
Kylar