ฉันจะ“ เปิดแอพจากผู้พัฒนาที่ไม่ระบุชื่อ” ได้อย่างไรโดยไม่ต้องใช้ GUI


13

โดยทั่วไปฉันใช้Safari.appเว็บเบราว์เซอร์ดั้งเดิมเพื่อดาวน์โหลดแอปพลิเคชันของบุคคลที่สามและฉันต้องการเรียกใช้ / openจากความสะดวกสบายของbashเชลล์ / Terminal.appCLI ของฉัน; แม้จะมีข้อความผิดพลาดดังต่อไปนี้:

“<unidentified_thirdparty.app>” cant be opened because it is from an unidentified 
 developer. Your security preferences allow installation of only apps from the Mac 
 App Store and identified developers. Safari downloaded this file on <today's_date> 
 from <the.inter.net>.
                                          |[OK]|

คำตอบ:


31

คุณจะต้องเปลี่ยนการตั้งค่าภายใต้การตั้งค่าระบบ > ความปลอดภัยและความเป็นส่วนตัว > ทั่วไป > อนุญาตแอปพลิเคชันที่ดาวน์โหลดจาก: ไปยัง ทุกที่ หรือในเทอร์มินัลให้ดึงแอตทริบิวต์xattr com.apple.quarantineจากไฟล์ที่ดาวน์โหลด

xattr -dr com.apple.quarantine "unidentified_thirdparty.app"

ฉันรู้วิธี GUI ส่วนถัดไปดูเป็นจุด ๆ อะไรกันแน่ที่ไม่com.apple.quarantine(แอตทริบิวต์) อาร์กิวเมนต์หมายถึง?
เสียง

1
@ tjt263 ขออภัยฉันไม่เห็นความคิดเห็นของคุณจนกระทั่งตอนนี้ ... วัตถุระบบแฟ้มทั้งหมดมีคุณลักษณะเช่นข้อมูลที่คุณเห็นในผลลัพธ์ของls -l fileคำสั่ง วัตถุระบบไฟล์ยังมีคุณสมบัติเพิ่มเติมซึ่งcom.apple.quarantineเป็นสิ่งที่ถูกกำหนดให้กับวัตถุที่ดาวน์โหลดจากอินเทอร์เน็ตโดย OS X เพื่อช่วยป้องกันการดำเนินการโดยพลการและปกป้องระดับระบบหนึ่งระดับ การใช้ls -lR@ fileหรือxattr −lr fileจะแสดงข้อมูลแอ็ตทริบิวต์ส่วนขยายซึ่งส่วนหลังจะส่งข้อมูลที่ละเอียดมาก ดูman xattrข้อมูลเพิ่มเติม
user3439894

ว้าว. นั่นดูน่าสนใจ. ฉันไม่รู้เกี่ยวกับเรื่องนั้น ระบบปฏิบัติการอื่นมีบางอย่างในที่นี้ไหม?
เสียง

นอกจากนี้คุณยังสามารถใช้คลิกขวา (aka ctrl-click) และเลือก "เปิด" เพื่ออนุญาตให้เรียกใช้แอปนั้นได้
Hawken Rives

1
@HawkenRives ใช่มันเป็นเพราะเป็นการตั้งค่าระดับโลกไม่ใช่การเรียกใช้หรือการเปิดไฟล์ตามจริงเมื่อคลิกขวาที่ไฟล์ การใช้xattrส่วนของคำตอบของฉันครอบคลุมบรรทัดคำสั่งและเทอร์มินัล
user3439894

0

ป้อนสิ่งนี้ในเทอร์มินัลภายใต้บัญชีผู้ดูแลระบบ: sudo spctl --master-disable


นี่จะปิด Gatekeeper อย่างสมบูรณ์ และมันไม่ได้เป็นคำตอบสำหรับคำถาม
l1ghthouse

0

ที่จะทำอย่างชาญฉลาดในบรรทัดคำสั่ง

  • attr -p com.apple.quarantine unidentified_thirdparty.app แสดงผลเหมือน 0081;5e7fec61;Chrome;6585C1D3-E260-4275-9E6E-505DF8D6B7EE
  • คัดลอกสตริงเอาต์พุตแทนที่อักขระ 4 ตัวแรกด้วย 00c1
  • วิ่ง attr -w com.apple.quarantine 00c1;5e7fec61;Chrome;6585C1D3-E260-4275-9E6E-505DF8D6B7EE unidentified_thirdparty.app

หรือ

รวมขั้นตอนเหล่านี้เข้ากับคำสั่งเดียว

attr -w com.apple.quarantine "$(attr -p com.apple.quarantine unidentified_thirdparty.app | sed 's/^.\{4\}/00c1/' )" unidentified_thirdparty.app

บล็อกโพสต์ของฉันเกี่ยวกับเรื่องนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.