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


13

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

“<unidentified_thirdparty.app>” can’t 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.