Apa yang harus saya lakukan tentang com.apple.quarantine?

90

Saya telah mengunduh beberapa .jarfile dari internet dan ingin menggunakannya di bawah Mac OS X. Tetapi OS tersebut tampaknya telah menandai mereka dengan atribut extended com.apple.quarantine (tidak ada indikasi ini sampai saya perhatikan " @" di dalam ls -ldan tahu cara menggunakan ls -l@) - tampaknya karena mereka telah diunduh dari internet. Apa cara yang tepat untuk menghadapi ini?

Jason S
sumber

Jawaban:

63

Atribut ini ditambahkan sehingga dapat meminta konfirmasi pengguna saat pertama kali program yang diunduh dijalankan, untuk membantu menghentikan malware. Setelah konfirmasi, atribut harus dihapus secara otomatis, dan kemudian program akan berjalan secara normal.

mark4o
sumber
ahhhhhh .... ok itu masuk akal. Jadi itu adalah kontrak antara implementasi browser yang menyimpan file, dan OS dan / atau Java ketika menjalankan executable.
Jason S
kecuali itu tidak dihapus saat terbuka dan tampaknya bertahan tanpa batas, bahkan ketika diseret ke / Aplikasi
Erik Aigner
83

Anda tidak harus menghadapinya. Buka dan OS X akan meminta izin Anda. Atau seperti yang disarankan richard, hapus menggunakan sesuatu seperti:

xattr -d com.apple.quarantine my_jar.jar

Untuk melakukan ini secara otomatis untuk file apa pun yang diunduh, Anda dapat melampirkan tindakan folder ke folder unduhan, seperti yang dijelaskan di macosxhints.com di 10.5: Hapus bendera peringatan 'file yang didownload' .

Dan berikut ini telah diposting pada macosxhints.com lama, untuk Safari: 10,5: Nonaktifkan 'download dari internet' peringatan berkas , mengklaim satu dapat menghapus VerifiedDownloadPlugin.plugindari /Library/Internet Plug-Ins. Saya tidak mengujinya.

Sebagai tambahan: terkadang seseorang perlu memulai satu program berkali-kali pada Mac. Itu bisa dilakukan menggunakan cd /Applications/some-application/diikuti oleh open -n "Application Name.app". Ini benar-benar membutuhkan .appakhiran; menjalankan open -n "Application Name"mungkin mendapatkan satu akses penghenti GateKeeper:

"Nama Aplikasi" tidak dapat dibuka karena berasal dari pengembang yang tidak dikenal.

Preferensi keamanan Anda memungkinkan pemasangan hanya aplikasi dari Mac App Store dan pengembang yang diidentifikasi.

Di atas, bahkan menghapus atribut yang diperluas com.apple.quarantinetidak memperbaikinya, tetapi menggunakan .appakhiran berfungsi dengan baik.

(Saya tidak menyarankan siapa pun untuk benar-benar menyingkirkan langkah-langkah keamanan.)

Arjan
sumber
1
Saya memiliki sejumlah file seperti ini dan harus menghapus xattr secara manual karena OS X tidak meminta izin ...
Brian Knoblauch
1
@ Brian, dan apakah klik kanan, Buka juga tidak meminta? (Kadang-kadang membantu jika OS X memang meminta satu, tetapi tidak menunjukkan pilihan untuk melanjutkan.)
Arjan
1
Terima kasih atas mantra xattr, lebih sedikit kesulitan daripada mencari tahu cara memicu beberapa dialog (IMO) yang tidak pantas pada suatu kerangka kerja.
Sue Spence
22
 xattr -d com.apple.quarantine /path/to/file
Richard Hoskins
sumber
3
Jangan gunakan sudosaat Anda tidak perlu.
s4y
1
Mengedit jawaban untuk menghapus 'sudo'.
Richard Hoskins
1
Bagaimana Anda melakukan ini secara rekursif ke semua file dalam direktori?
Landon Kuhn
1
@ landon9720 - Jawaban (saat ini) di bawah ini memiliki komentar yang memungkinkan Anda untuk menginstruksikan xattr untuk bekerja secara rekursif atas isi direktori yang disediakan
user66001
2
find /path/to/dir -exec xattr -d com.apple.quarantine {} \;
sepehr
6

Anda dapat menonaktifkan peringatan secara permanen dengan defaults write com.apple.LaunchServices LSQuarantine -bool false. Ini juga menonaktifkan dialog Gatekeeper bahkan jika Anda belum mengizinkan aplikasi yang diunduh dari mana saja di System Preferences.

Lri
sumber
4

Saya menemukan perintah berikut

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

sangat membantu ketika mencoba untuk menghilangkan atribut tersebut. Perhatikan tanda kutip ganda di sekitar $l- Anda memerlukannya jika folder aplikasi berisi file dengan nama kosong.

slhck
sumber
9
Anda juga bisa menggunakannya xattr -rd com.apple.quarantine Application.app.
Lri
4
Anda tidak perlu loop ... while. find dapat melakukan semuanya: "find Application.app -print -exec xattr -d com.apple.quarantine {} \;"
rivimey
"opsi -r tidak dikenali"
Jamie Ivanov
Tidak perlu menelurkan proses baru untuk setiap file, Anda juga tidak harus menghapus xattribute dari file jika tidak memilikinya di tempat pertama:find . -xattrname com.apple.quarantine -print0 | xargs -0 xattr -d com.apple.quarantine
dland
Semua contoh baris perintah ini hanya berfungsi ketika Anda berada di direktori yang berisi aplikasi. @dland findjuga memiliki yang -executama. find /Applications -xattrname com.apple.quarantine -exec xattr -d com.apple.quarantine {} \; Anda dapat mengganti /Applicationsdengan path lengkap yang Anda inginkan, mis. /Users/jdoe/Downloads Jika Anda berada di direktori di mana file berada, lakukan saja di xattr -d com.apple.quarantine <target>mana <target>file atau nama aplikasi.
user2531336
0

xattr sekarang memiliki flag -r untuk recurse. Jadi, Anda tidak harus melalui mencari barang itu. Juga memiliki -c yang akan menghapus SEMUA flag (termasuk FinderInfo), tidak selalu disarankan kecuali Anda benar-benar marah karenanya. :-)

OsamaBinLogin
sumber
uh ... pertanyaan apa yang kamu jawab?
Jason S
Sepertinya Anda mengomentari jawaban lain dalam pertanyaan ini ( superuser.com/a/126227/1162 ) daripada memberikan jawaban Anda sendiri.
Jason S