Skip to main content

ล้าง Extended Attribute ใน Mac OS X Leopard และ Snow Leopard

Submitted by ezybzy on

เมื่อเราใช้คำสั่ง ls -l ใน Mac OS X Leopard เราจะพบกับ permission bits ตามปกติ แต่เราอาจจะเจอสัญลักษณ์พิเศษด้านหลังคือ @ เช่น

-rw-r--r--@

(บิทแรกเป็นบอกชนิด ถ้าเป็น d คือ Directory, l คือ Symbolic link)

ทีนี้ปัญหากวนใจที่ผมพบเมื่อเปิดโปรแกรมบางตัวคือ เวลามันทำ Font index ภายในโปรแกรมมันเอง (มีซักกี่ตัวที่มีระบบจัดการฟอนต์เป็นพิเศษเพื่อตัวมันเองหนอ?) มันจะมีไดอะล็อกเด้งขึ้นมากวนใจผมว่า “โปรแกรม___จะทำการใช้งานฟอนต์___ซึ่งดาวน์โหลดมาจากอินเตอร์เน็ต อนุญาตให้โปรแกรม___ใช้งานฟอนต์ตัวนี้ไหม?” โอเคถ้าแค่ฟอนต์ตัวเดียวก็คงไม่มีปัญหาอะไร แต่ถ้ามันเด้งแบบนี้ซักร้อยทีล่ะ กด Allow กันมือหงิกเลย แถมถ้าต่างโปรแกรมมันก็จะถามคำถามนี้อีก โอ้ยใครจะไปกดไหว สาเหตุจริงๆ เกิดจากการที่ Mac OS X เริ่มจะฉลาดคือเริ่มหยั่งรู้ว่าไฟล์บางไฟล์ถูกดาวน์โหลดผ่านบราวเซอร์และทำการ Mark ค่าบางอย่างคือ com.apple.quarantine ไว้บนไฟล์นั้น เมื่อทำการเปิดไฟล์ดังกล่าวและทำการติดตั้งไฟล์เหล่านั้นลงในเครื่อง (เช่นลากโปรแกรมออกจาก Disk Image) ค่านี้ก็จะตามไปด้วยแล้วทำให้เกิดคำถามในครั้งแรกที่เปิดเรียกใช้งานไฟล์/โปรแกรมที่ติดตั้งไปว่า “โปรแกรม___ถูกดาวน์โหลดจากอินเตอร์เน็ตด้วย___เมื่อ___ จะเปิดใช้งานไหม?” ซึ่งเมื่อกดยอมรับ โปรแกรมก็จะเปิดใช้งานได้และจะไม่ถามคำถามนี้อีกเลยจนกว่าจะถูกติดตั้งเวอร์ชั่นใหม่ทับด้วยวิธีเดิม

วิธีแก้ใช้คำสั่ง xattr ตามด้วยพารามิเตอร์ -d com.apple.quarantine ตามด้วยชื่อไฟล์ที่ต้องการลบค่านี้ออก อาจจะเพิ่ม -R ไว้หลัง -d เพื่อจะ recursive เข้าไปในไดเรคตอรี่ที่ต้องการลบค่าด้วย