mount está agregando una bandera de cuarentena, causando: / bin / bash: mal intérprete: Operación no permitida, pero no los sospechosos habituales

8

OK, tengo un problema similar a: -bash: Aplicaciones / mvim: / bin / sh: mal intérprete: Operación no permitida , pero no es el mismo problema. Estoy obteniendo el mismo resultado.

Ya he comprobado que es no la bandera com.apple.quarantine.

Es no los finales de línea (guión fue creado sólo desde vi). Puedo ejecutar el script usando:

bash simpleshell.sh

Aquí están los resultados:

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$ 

ACTUALIZACIÓN: No creo que sea el sistema de archivos que se está montando como noexec. Intenté ejecutar el script en 3 lugares diferentes: / tmp, ~ y / source.

ACTUALIZACIÓN2: Ok, después de más excavaciones: creé el script dentro de / source, que es un dmg montado. Ahí es donde ejecuté xattr -l y no encontré nada. Cuando hice el script en ~ y ejecuté xattr -l, entonces tenía el com.apple.quarantine xattr. En una corazonada, miré los atributos de montaje para / source y encontré:

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

Entonces, cuando monto este dmg, se pone en cuarentena. ¿Cómo puedo decirle a mount que no lo monte con la bandera de cuarentena? Una vez que eliminé la bandera en ~, el script funcionó bien.

Kylar
fuente
Si no obtiene su respuesta aquí, considere preguntar en UNIX y Linux SE.
Max Ried
De todos modos, puedo publicarlo de manera cruzada, esto básicamente me impide realizar cualquier trabajo :(
Kylar
¿Eres capaz de ejecutar otros programas en el mismo sistema de archivos de manera similar? Eso está usando chmod +x file.sh; ./file.sh. Tal vez ese sistema de archivos esté montado con el indicador "noexec".
cm2
2
Puede ser útil volver a escribir su pregunta para preguntar solo cómo decirle a mount que no use la bandera de cuarentena, ya que ahora determinó que ese era su problema real. Además, no sé cómo deshabilitarlo para un volumen particular, sino a la cuarentena desactivar por completo, defaults write com.apple.LaunchServices LSQuarantine -bool NO.
houbysoft
2
OK, lo he resuelto. Había un com.apple.quarantine xattr establecido en el archivo .dmg. Tuve que desmontarlo, borrar el xattr y luego volver a montar el dmg. GAH. @houbysoft: gracias por el consejo para apagarlo por completo.
Kylar

Respuestas:

1

El script se ejecutaba desde dentro de un .dmg que tenía la bandera de cuarentena activada. Cuando se montó el .dmg, lo estaba montando con una bandera de cuarentena que se hereda, pero que no aparece. Desmonté el .dmg, quité la bandera de cuarentena y la volví a montar, y todo estuvo bien.

Kylar
fuente
Gracias por esto. Tuve un problema similar y me estaba volviendo loco: un script de Perl, creado por Vim (o incluso cat), sin xattr de cuarentena asociado. Sin embargo, el script residía en un paquete disperso montado. Después de leer esta página, desmonté el sistema de archivos y miré dentro del paquete: había un archivo llamado "token" que tenía configurado el comando xattr "com.apple.quarantine". Una vez que eliminé el xattr y volví a montar el sistema de archivos del paquete disperso, mi problema de "mal intérprete" con el script Perl desapareció.
Lee Johnson
0

Tengo una solución simple: cat configure.sh> test.sh y luego ejecuto test.sh.

Resulta ser un problema de editor: https://discussions.apple.com/thread/3733470?start=30&tstart=0

sihong xie
fuente
No, no es una solución para mi situación. Como dice la pregunta, estaba usando vi para crear los scripts. Sin embargo, ese es un enlace interesante.
Kylar