題 我該怎麼辦com.apple.quarantine?


我已經下載了一些 .jar 來自互聯網的文件,並希望在Mac OS X下使用它們。但操作系統似乎用擴展屬性com.apple.quarantine標記了它們(直到我注意到“@“ 在裡面 ls -l 並想出如何使用 ls -l@) - 顯然是因為他們已經從互聯網上下載。處理這個問題的正確方法是什麼?


84
2017-08-23 21:10


起源




答案:


添加此屬性,以便在第一次運行下載的程序時可以請求用戶確認,以幫助阻止惡意軟件。確認後,應自動刪除該屬性,然後程序將正常運行。


57
2017-08-23 21:39



啊啊......好吧,這很有道理。因此,它是保存文件的瀏覽器實現與運行可執行文件時的操作系統和/或Java之間的契約。 - Jason S


你沒有  處理它。打開它,OS X會請求您的許可。或者像richard建議的那樣,使用以下內容刪除它:

xattr -d com.apple.quarantine my_jar.jar

要自動為任何下載的文件執行此操作,您可以將文件夾操作附加到下載文件夾,如macosxhints.com中所述 10.5:刪除“下載文件”警告標誌

很久以前,對於Safari,以下內容髮佈在macosxhints.com上: 10.5:禁用“從網上下載”文件警告聲稱可以刪除 VerifiedDownloadPlugin.plugin 從 /Library/Internet Plug-Ins。我沒有測試過。

暫時不說:有時需要在Mac上多次啟動一個程序。這可以使用 cd /Applications/some-application/ 其次是 open -n "Application Name.app"。這確實需要 .app 後綴;賽跑 open -n "Application Name" 可能會讓一個GateKeeper停止訪問:

無法打開“應用程序名稱”,因為它來自一個身份不明的開發人員。

您的安全首選項僅允許從Mac App Store和已識別的開發人員安裝應用程序。

上面,甚至刪除擴展屬性 com.apple.quarantine 不解決,但使用 .app 後綴工作得很好。

(我不是建議任何人真正擺脫安全措施。)


75
2017-08-23 21:40



我有很多像這樣的文件,不得不手動刪除xattr,因為OS X沒有要求許可... - Brian Knoblauch
@Brian,右鍵單擊,打開不提示? (如果OS X確實提示一個,有時會有幫助,但是沒有顯示繼續的選項。) - Arjan
感謝xattr咒語,而不是弄清楚如何在框架上觸發一些不恰當的(IMO)對話。 - Sue Spence


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

19
2017-08-23 21:33



不要用 sudo 當你不需要。 - s4y
編輯了刪除'sudo'的答案。 - Richard Hoskins
如何以遞歸方式對目錄中的所有文件執行此操作? - Landon Kuhn
@ landon9720 - (目前) 低於答案 有個 評論 這允許您指示xattr以遞歸方式處理所提供目錄的內容 - user66001
find /path/to/dir -exec xattr -d com.apple.quarantine {} \; - sepehr


您可以永久禁用警告 defaults write com.apple.LaunchServices LSQuarantine -bool false。即使您未允許從“系統偏好設置”中的任何位置下載應用程序,它也會禁用“關守”對話框。


4
2018-05-03 13:36





我找到了以下命令

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

在試圖擺脫屬性時非常有用。請注意雙引號 $l  - 如果您的apps文件夾包含名稱中包含空白的文件,則需要它們。


1
2018-03-31 20:44



你也可以使用 xattr -rd com.apple.quarantine Application.app。 - user495470
你不需要while ...循環。 find可以做到這一切:“找到Application.app -print -exec xattr -d com.apple.quarantine {} \;” - rivimey
“選項-r無法識別” - Jamie Ivanov
不需要為每個文件生成新進程,如果首先沒有它,也不必從文件中刪除xattribute: find . -xattrname com.apple.quarantine -print0 | xargs -0 xattr -d com.apple.quarantine - dland