Tôi nên làm gì về com.apple.quarantine?


90

Tôi đã tải xuống một số .jartệp từ internet và muốn sử dụng chúng trong Mac OS X. Nhưng HĐH dường như đã gắn thẻ chúng với thuộc tính mở rộng com.apple.quarantine (không có dấu hiệu nào cho đến khi tôi nhận thấy " @" trong ls -lvà tìm ra cách sử dụng ls -l@) - dường như bởi vì chúng đã được tải xuống từ internet. Cách đúng đắn để đối phó với điều này là gì?

Câu trả lời:


63

Thuộc tính này được thêm vào để nó có thể yêu cầu xác nhận của người dùng trong lần đầu tiên chương trình tải xuống được chạy, để giúp ngăn chặn phần mềm độc hại. Sau khi xác nhận, thuộc tính sẽ được xóa tự động và sau đó chương trình sẽ chạy bình thường.


ahhhhhh .... ok điều đó có ý nghĩa. Vì vậy, đó là một hợp đồng giữa các triển khai trình duyệt lưu tệp và HĐH và / hoặc Java khi chạy các tệp thực thi.
Jason S

ngoại trừ nó không bị xóa khi mở và dường như tồn tại vô thời hạn, ngay cả khi được kéo đến / Ứng dụng
Erik Aigner

83

Bạn không phải đối phó với nó. Mở nó và OS X sẽ xin phép bạn. Hoặc như Richard đề xuất, xóa nó bằng cách sử dụng một cái gì đó như:

xattr -d com.apple.quarantine my_jar.jar

Để thực hiện việc này một cách tự động cho bất kỳ tệp nào đã tải xuống, bạn có thể đính kèm một hành động thư mục vào thư mục tải xuống, như được mô tả trên macosxhints.com trong 10.5: Xóa cờ cảnh báo 'tệp đã tải xuống' .

Và những điều sau đây đã được đăng trên macosxhints.com từ lâu, đối với Safari: 10.5: Vô hiệu hóa cảnh báo 'tải xuống từ internet' , tuyên bố một người có thể xóa VerifiedDownloadPlugin.pluginkhỏi /Library/Internet Plug-Ins. Tôi đã không kiểm tra điều đó.

Như một bên: đôi khi một người cần phải bắt đầu một chương trình nhiều lần trên máy Mac. Điều đó có thể được thực hiện bằng cách sử dụng cd /Applications/some-application/theo sau open -n "Application Name.app". Điều này thực sự cần .apphậu tố; đang chạy open -n "Application Name"có thể khiến một GateKeeper dừng truy cập:

"Tên ứng dụng" không thể được mở vì nó là của một nhà phát triển không xác định.

Tùy chọn bảo mật của bạn cho phép chỉ cài đặt các ứng dụng từ Mac App Store và các nhà phát triển được xác định.

Ở trên, thậm chí loại bỏ thuộc tính mở rộng com.apple.quarantinekhông khắc phục điều đó, nhưng sử dụng .apphậu tố chỉ hoạt động tốt.

(Tôi không khuyên ai thực sự thoát khỏi các biện pháp an ninh.)


1
Tôi có một số tệp như thế này và đã phải xóa xattr theo cách thủ công vì OS X không xin phép ...
Brian Knoblauch

1
@Brian, và nhấp chuột phải, Mở cũng không nhắc? (Điều đó đôi khi hữu ích nếu OS X không nhắc một, nhưng không hiển thị tùy chọn để tiếp tục.)
Arjan

1
Cảm ơn câu thần chú xattr, ít bận tâm hơn là tìm ra cách kích hoạt một số đoạn hội thoại (IMO) không phù hợp trên khung.
Sue Spence

22
 xattr -d com.apple.quarantine /path/to/file

3
Đừng sử dụng sudokhi bạn không phải.
s4y

1
Đã chỉnh sửa câu trả lời để xóa 'sudo'.
Richard Hoskins

1
Làm thế nào để bạn làm điều này đệ quy cho tất cả các tệp trong một thư mục?
Landon Kuhn

1
@ Landon9720 - Câu trả lời (hiện tại) bên dưới có một nhận xét cho phép bạn hướng dẫn xattr làm việc đệ quy qua nội dung của một thư mục được cung cấp
user66001 23/07/13

2
find /path/to/dir -exec xattr -d com.apple.quarantine {} \;
sepehr 16/07/2015

6

Bạn có thể vô hiệu hóa các cảnh báo vĩnh viễn với defaults write com.apple.LaunchServices LSQuarantine -bool false. Nó cũng vô hiệu hóa các hộp thoại Gatekeeper ngay cả khi bạn không cho phép các ứng dụng được tải xuống từ bất kỳ đâu trong Tùy chọn hệ thống.


4

Tôi tìm thấy lệnh sau

find Application.app | while read l; do echo $l; xattr -d com.apple.quarantine "$l"; done

rất hữu ích khi cố gắng thoát khỏi thuộc tính. Lưu ý dấu ngoặc kép xung quanh $l- bạn cần chúng nếu thư mục ứng dụng của bạn chứa các tệp có trống trong tên của chúng.


9
Bạn cũng có thể sử dụng xattr -rd com.apple.quarantine Application.app.
Lri

4
Bạn không cần vòng lặp while ... tìm có thể làm tất cả: "tìm Application.app -print -exec xattr -d com.apple.quarantine {} \;"
Rivimey

"tùy chọn -r không được công nhận"
Jamie Ivanov

Không cần phải tạo ra một quy trình mới cho mỗi tệp, bạn cũng không phải xóa xattribution khỏi tệp nếu nó không có nó ở vị trí đầu tiên:find . -xattrname com.apple.quarantine -print0 | xargs -0 xattr -d com.apple.quarantine
dland

Tất cả các ví dụ dòng lệnh này chỉ hoạt động khi bạn đang ở trong thư mục chứa ứng dụng. @dland findcũng có một -execchính. find /Applications -xattrname com.apple.quarantine -exec xattr -d com.apple.quarantine {} \; Bạn có thể thay thế /Applicationsbằng đường dẫn đầy đủ mà bạn muốn, ví dụ: /Users/jdoe/Downloads Nếu bạn đang ở trong thư mục chứa tệp, chỉ cần thực hiện xattr -d com.apple.quarantine <target>ở đâu <target>là tên tệp hoặc ứng dụng.
dùng2531336

0

xattr hiện có cờ -r để lặp lại. Vì vậy, bạn không cần phải đi qua đó tìm công cụ. Ngoài ra, nó có một -c sẽ xóa TẤT CẢ các cờ (bao gồm FinderInfo), không phải lúc nào cũng được đề xuất trừ khi bạn thực sự tức giận với nó. :-)


uh ... bạn đang trả lời câu hỏi nào?
Jason S

Có vẻ như bạn đang nhận xét về một câu trả lời khác trong câu hỏi này ( superuser.com/a/126227/1162 ) thay vì tự mình trả lời.
Jason S
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.