mount menambahkan bendera karantina, menyebabkan: / bin / bash: interpreter buruk: Operasi tidak diizinkan - tetapi bukan tersangka yang biasanya


8

OK, saya mengalami masalah yang mirip dengan: -bash: Aplikasi / mvim: / bin / sh: bad interpreter: Operasi tidak diizinkan - tetapi ini bukan masalah yang sama. Saya mendapatkan hasil yang sama.

Saya sudah memverifikasi bahwa ini bukan bendera com.apple.quarantine.

Ini bukan akhiran baris (skrip dibuat hanya dari vi). Saya dapat menjalankan skrip dengan menggunakan:

bash simpleshell.sh

Inilah hasilnya:

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: Saya tidak percaya itu sistem file yang dipasang sebagai noexec. Saya sudah mencoba menjalankan skrip di 3 tempat berbeda: / tmp, ~, dan / source.

UPDATE2: Ok, setelah menggali lagi - saya membuat skrip di dalam / sumber, yang merupakan dmg yang terpasang. Di situlah saya menjalankan xattr -l dan tidak menemukan apa pun. Ketika saya membuat script untuk ~ dan menjalankan xattr -l, ia kemudian memiliki xattr com.apple.quarantine. Pada firasat, saya melihat atribut mount untuk / sumber dan menemukan:

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

Jadi ketika saya memasang dmg ini sudah ditetapkan sebagai karantina. Bagaimana saya bisa memberi tahu mount untuk tidak memasangnya dengan bendera karantina? Setelah saya menghapus bendera di ~, skrip berjalan dengan baik.


Jika Anda tidak mendapatkan jawaban Anda di sini, pertimbangkan untuk bertanya pada UNIX dan Linux SE.
Max Ried

Saya bisa saja mem-cross-post-nya - ini pada dasarnya menghalangi saya untuk menyelesaikan pekerjaan :(
Kylar

Apakah Anda dapat menjalankan program lain pada sistem file yang sama dengan cara yang sama? Itu menggunakan chmod +x file.sh; ./file.sh. Mungkin filesystem yang dipasang dengan bendera "noexec".
cm2

2
Mungkin bermanfaat untuk menulis ulang pertanyaan Anda untuk hanya bertanya tentang cara memberi tahu mount agar tidak menggunakan bendera karantina, karena Anda sekarang telah menentukan bahwa itu adalah masalah Anda yang sebenarnya. Juga, saya tidak tahu cara menonaktifkannya untuk volume tertentu, tetapi untuk menonaktifkan karantina sama sekali defaults write com.apple.LaunchServices LSQuarantine -bool NO,.
houbysoft

2
OK, saya sudah menyelesaikannya. Ada xattr com.apple.quarantine yang diset pada file .dmg. Saya harus meng-unmount-nya, menghapus xattr dan kemudian memasang kembali dmg. GAH. @houbysoft: terima kasih atas tip mematikannya sepenuhnya.
Kylar

Jawaban:


1

Script dijalankan dari dalam .dmg yang memiliki bendera karantina di atasnya. Ketika .dmg di-mount, itu sedang memasang itu dengan bendera karantina yang diwarisi, tetapi tidak muncul. Saya melepas .dmg, melepas bendera karantina, dan memasangnya kembali, dan semuanya baik-baik saja.


Terima kasih untuk ini. Saya memiliki masalah yang sama, dan itu membuat saya gila: Skrip Perl, dibuat oleh Vim (atau bahkan kucing), tanpa xattr karantina yang terkait dengannya. Namun, skrip berada dalam bundel yang jarang dipasang. Setelah membaca halaman ini, saya unmount sistem file dan melihat ke dalam bundel: Ada file bernama "token" di sana yang memiliki set xattr "com.apple.quarantine". Setelah saya menghapus xattr dan menulis ulang sistem berkas bundel yang jarang, masalah "penerjemah buruk" saya dengan skrip Perl hilang.
Lee Johnson

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.