mount đang thêm cờ kiểm dịch, gây ra: / bin / bash: trình thông dịch xấu: Không được phép hoạt động - nhưng không phải là nghi phạm thông thường


8

OK, tôi đang gặp vấn đề tương tự như: -bash: Ứng dụng / mvim: / bin / sh: trình thông dịch xấu : Thao tác không được phép - nhưng đó không phải là vấn đề tương tự. Tôi đang nhận được kết quả tương tự.

Tôi đã xác minh rằng đó không phải là cờ com.apple.quarantine.

Đây không phải là kết thúc dòng (tập lệnh được tạo từ vi). Tôi có thể thực thi tập lệnh bằng cách sử dụng:

bash simpleshell.sh

Đây là kết quả:

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$ 

CẬP NHẬT: Tôi không tin đó là hệ thống tập tin được gắn kết là noexec. Tôi đã thử chạy tập lệnh ở 3 nơi khác nhau: / tmp, ~ và / source.

CẬP NHẬT2: Ok, sau khi đào thêm - Tôi đã tạo tập lệnh bên trong / nguồn, là một dmg được gắn kết. Đó là nơi tôi đã chạy xattr -l và không tìm thấy gì. Khi tôi cp'd script thành ~ và chạy xattr -l, thì nó đã có com.apple.quarantine xattr. Trong một linh cảm, tôi đã xem xét các thuộc tính gắn kết cho / nguồn và tìm thấy:

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

Vì vậy, khi tôi gắn dmg này, nó sẽ được đặt cách ly. Làm thế nào tôi có thể nói gắn kết không gắn kết với cờ kiểm dịch? Khi tôi xóa cờ trong ~, tập lệnh chạy tốt.


Nếu bạn không nhận được câu trả lời của mình ở đây, hãy xem xét hỏi về UNIX và Linux SE.
Max Ried

Tôi chỉ có thể đăng chéo nó bằng mọi cách - điều này về cơ bản ngăn tôi hoàn thành bất kỳ công việc nào :(
Kylar

Bạn có thể chạy các chương trình khác trên cùng một hệ thống tập tin theo cách tương tự không? Đó là sử dụng chmod +x file.sh; ./file.sh. Có thể hệ thống tập tin đó được gắn cờ "noexec".
cm2

2
Có thể hữu ích khi viết lại câu hỏi của bạn để chỉ hỏi về cách nói với mount không sử dụng cờ kiểm dịch, vì bây giờ bạn đã xác định đó là vấn đề thực sự của bạn. Ngoài ra, tôi không biết cách vô hiệu hóa nó cho một âm lượng cụ thể, nhưng để vô hiệu hóa cách ly hoàn toàn , defaults write com.apple.LaunchServices LSQuarantine -bool NO.
houbysoft

2
OK, tôi đã giải quyết nó. Có một tập hợp com.apple.quarantine xattr trên tệp .dmg. Tôi đã phải tháo nó ra, xóa xattr và sau đó kể lại dmg. GAH. @houbysoft: cảm ơn vì mẹo tắt nó hoàn toàn.
Kylar

Câu trả lời:


1

Kịch bản đang được chạy từ bên trong một .dmg có cờ kiểm dịch được đặt trên đó. Khi .dmg được gắn kết, nó được gắn với cờ kiểm dịch được kế thừa, nhưng không hiển thị. Tôi đã ngắt kết nối .dmg, gỡ bỏ cờ kiểm dịch và gắn lại, và tất cả đều ổn.


Cảm ơn vì điều này. Tôi đã có một vấn đề tương tự, và nó khiến tôi phát điên: Một kịch bản Perl, được tạo bởi Vim (hoặc thậm chí là con mèo), không có kiểm dịch xattr liên quan đến nó. Tuy nhiên, tập lệnh nằm trong một gói thưa thớt gắn kết. Sau khi đọc trang này, tôi đã ngắt kết nối hệ thống tập tin và xem bên trong gói: Có một tệp có tên "mã thông báo" trong đó có bộ xattr "com.apple.quarantine". Khi tôi xóa xattr và kết nối lại hệ thống tập tin gói thưa thớt, vấn đề "trình thông dịch xấu" của tôi với tập lệnh Perl đã biến mất.
Lee Johnson

0

Tôi có một giải pháp đơn giản: cat configure.sh> test.sh sau đó chạy test.sh.

Hóa ra là một vấn đề về trình soạn thảo: https://discussions.apple.com/thread/3733470?start=30&tstart=0


Không, đó không phải là một giải pháp cho tình huống của tôi. Khi câu hỏi được đọc, tôi đã sử dụng vi để tạo các tập lệnh. Đó là một liên kết thú vị mặc dù.
Kylar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.