mount aggiunge un flag di quarantena, causando: / bin / bash: cattivo interprete: operazione non consentita - ma non i soliti sospetti


8

OK, sto riscontrando un problema simile a: -bash: Applicazioni / mvim: / bin / sh: cattivo interprete: operazione non consentita - ma non è lo stesso problema. Sto ottenendo lo stesso risultato.

Ho già verificato che non è il flag com.apple.quarantine.

E ' non è la fine riga (script è stato creato proprio da vi). Posso eseguire lo script usando:

bash simpleshell.sh

Ecco i risultati:

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$ 

AGGIORNAMENTO: Non credo che il filesystem sia montato come noexec. Ho provato a eseguire lo script in 3 posti diversi: / tmp, ~ e / source.

UPDATE2: Ok, dopo aver scavato di più - ho creato lo script inside / source, che è un dmg montato. È lì che ho eseguito xattr -l e non ho trovato nulla. Quando ho copiato la sceneggiatura su ~ ed eseguito xattr -l, ha avuto com.apple.quarantine xattr. In un sospetto, ho guardato gli attributi di mount per / source e ho trovato:

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

Quindi quando monto questo dmg viene impostato come quarantena. Come posso dire a mount di non montarlo con la bandiera di quarantena? Una volta rimosso il flag in ~, lo script è andato bene.


Se non trovi la risposta qui, considera di chiedere su UNIX e Linux SE.
Max Ried,

Potrei semplicemente postare il cross-post comunque - questo mi sta sostanzialmente impedendo di fare qualsiasi lavoro :(
Kylar

Sei in grado di eseguire altri programmi sullo stesso filesystem in modo simile? Quello sta usando chmod +x file.sh; ./file.sh. Forse quel filesystem è montato con il flag "noexec".
cm2

2
Potrebbe essere utile riscrivere la tua domanda per chiedere solo come dire a mount di non usare il flag di quarantena, dato che ora hai stabilito che era il tuo vero problema. Inoltre, non so come disattivare per un particolare volume, ma per la quarantena disabilitare del tutto, defaults write com.apple.LaunchServices LSQuarantine -bool NO.
houbysoft,

2
OK, l'ho risolto. C'era un xattr com.apple.quarantine impostato sul file .dmg. Ho dovuto smontarlo, cancellare xattr e quindi rimontare il dmg. GAH. @houbysoft: grazie per il consiglio di spegnerlo del tutto.
Kylar,

Risposte:


1

La sceneggiatura veniva eseguita dall'interno di un .dmg su cui era posizionata la bandiera di quarantena. Quando è stato montato .dmg, lo stava montando con una bandiera di quarantena che è ereditata, ma non si presenta. Ho smontato il .dmg, rimosso la bandiera di quarantena e rimontato, e tutto è andato bene.


Grazie per questo. Avevo un problema simile, e mi stava facendo impazzire: uno script Perl, creato da Vim (o persino da un gatto), senza xattr di quarantena associato. Tuttavia, lo script risiedeva in un bundle sparse montato. Dopo aver letto questa pagina, ho smontato il filesystem e ho guardato dentro il bundle: c'era un file chiamato "token" che conteneva il set xattr "com.apple.quarantine". Una volta eliminato xattr e rimontato il filesystem bundle sparse, il mio problema "cattivo interprete" con lo script Perl è scomparso.
Lee Johnson,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.