mount ajoute un indicateur de quarantaine, provoquant: / bin / bash: mauvais interprète: opération non autorisée - mais pas les suspects habituels


8

OK, j'ai un problème similaire à: -bash: Applications / mvim: / bin / sh: mauvais interprète: opération non autorisée - mais ce n'est pas le même problème. J'obtiens le même résultat.

J'ai déjà vérifié qu'il ne s'agit pas de l'indicateur com.apple.quarantine.

Ce ne sont pas les fins de ligne (le script a été créé uniquement à partir de vi). Je peux exécuter le script en utilisant:

bash simpleshell.sh

Voici les résultats:

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$ 

MISE À JOUR: Je ne crois pas que ce soit le système de fichiers monté en tant que noexec. J'ai essayé d'exécuter le script à 3 endroits différents: / tmp, ~ et / source.

UPDATE2: Ok, après plus de fouilles - j'ai créé le script dans / source, qui est un dmg monté. C'est là que j'ai exécuté xattr -l et n'ai rien trouvé. Lorsque j'ai copié le script sur ~ et exécuté xattr -l, il y avait alors le xattr com.apple.quarantine. Sur une intuition, j'ai regardé les attributs de montage pour / source et j'ai trouvé:

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

Donc, quand je monte ce dmg, il est mis en quarantaine. Comment puis-je dire à mount de ne pas le monter avec l'indicateur de quarantaine? Une fois que j'ai supprimé le drapeau dans ~, le script s'est bien déroulé.


Si vous n'obtenez pas votre réponse ici, pensez à demander sur UNIX et Linux SE.
Max Ried

Je peux simplement le poster de toute façon - cela m'empêche essentiellement de faire du travail :(
Kylar

Êtes-vous capable d'exécuter d'autres programmes sur le même système de fichiers de la même manière? Cela utilise chmod +x file.sh; ./file.sh. Peut-être que ce système de fichiers est monté avec le drapeau "noexec".
cm2

2
Il pourrait être utile de réécrire votre question pour demander uniquement comment dire à mount de ne pas utiliser l'indicateur de quarantaine, car vous avez maintenant déterminé que c'était votre problème réel. De plus, je ne sais pas comment le désactiver pour un volume, mais de désactiver la mise en quarantaine tout à fait, defaults write com.apple.LaunchServices LSQuarantine -bool NO.
houbysoft

2
OK, je l'ai résolu. Un fichier xattr com.apple.quarantine était défini dans le fichier .dmg. J'ai dû le démonter, effacer le xattr puis remonter le dmg. GAH. @houbysoft: merci pour l'astuce pour l'éteindre complètement.
Kylar

Réponses:


1

Le script était exécuté à partir d'un fichier .dmg sur lequel l'indicateur de quarantaine était défini. Lorsque le fichier .dmg a été monté, il le montait avec un indicateur de quarantaine hérité, mais n'apparaissant pas. J'ai démonté le .dmg, retiré le drapeau de quarantaine et l'ai remonté, et tout allait bien.


Merci pour ça. J'ai eu un problème similaire, et cela me rendait fou: Un script Perl, créé par Vim (ou même cat), sans xattr de quarantaine qui lui est associé. Cependant, le script résidait dans un bundle clairsemé monté. Après avoir lu cette page, j'ai démonté le système de fichiers et regardé à l'intérieur du bundle: il y avait un fichier nommé "token" qui contenait le jeu de xattr "com.apple.quarantine". Une fois que j'ai supprimé le xattr et remonté le système de fichiers groupé clairsemé, mon problème de "mauvais interprète" avec le script Perl a disparu.
Lee Johnson

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.