2012-03-03 20 views
5

ओएस एक्स 10.7.3 के बाद से, मेरा टेक्स्ट एडिटर किसी भी फाइल पर "क्वारंटाइन" बिट सेट कर रहा है।मैं अपने ऐप को "संगरोध" बिट सेट करने से कैसे रोक सकता हूं?

मेरा टेक्स्ट एडिटर शैल स्क्रिप्ट के साथ काम करने के लिए डिज़ाइन किया गया है, और यदि क्वारंटाइन बिट सेट किया गया है तो एक शेल स्क्रिप्ट को कमांड लाइन से निष्पादित नहीं किया जा सकता है, जब तक कि आप इसे खोजक में डबल क्लिक न करें और "यह एप्लिकेशन डाउनलोड हो गया हो इंटरनेट से "अलर्ट (या xattr के साथ संगरोध बिट को हटा दें)।

उदाहरण के लिए, मैं बस अपना अनुप्रयोग में एक "हैलो दुनिया" स्क्रिप्ट बनाया है, यह क्वारंटाइन किए गया है, और निष्पादित नहीं किया जा सकता है:

$ xattr -l foo 
com.apple.quarantine: 0006;4f51dd2f;Dux; 
$ chmod +x foo 
$ ./foo 
-bash: ./foo: Operation not permitted 

अगर मैं संगरोध बिट निकालने के लिए, स्क्रिप्ट काम करता है:

$ xattr -d com.apple.quarantine foo 
$ ./foo 
hello world 


कुछ मंच पदों के अनुसार, TextEdit भी किसी भी खोल स्क्रिप्ट यह बनाता है पर संगरोध बिट सेट।

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError 
{ 
    return [self.textStorage.string dataUsingEncoding:self.stringEncoding]; 
} 


मैं अपने अनुप्रयोग में बनाई गई फ़ाइलों से संगरोध बिट निकाल सकते हैं:

मैं फ़ाइल बनाने के लिए एक सरल NSDocument उपवर्ग उपयोग कर रहा हूँ? अन्य टेक्स्ट एडिटर्स, जैसे टेक्स्टवंग्लर, क्वारंटाइन बिट सेट न करें।

अद्यतन

कुछ और जानकारी की, यह केवल तब होता है जब एक "स्क्रिप्ट आवेदन" फ़ाइल है, जो एचटीएमएल के लिए पर्ल स्क्रिप्ट से कुछ भी है निर्माण।

और यह तब होता है जब मेरा ऐप सैंडबॉक्स होता है। सैंडबॉक्सिंग को अक्षम करने से समस्या ठीक हो जाती है, लेकिन यह दीर्घकालिक समाधान नहीं है।

मैंने रडार के साथ एक बग दायर किया है, ऐसा लगता है कि ऐसा करने के लिए कुछ भी नहीं हो सकता है लेकिन उम्मीद है कि एवेन्यू इसे ठीक कर लेगा।

उत्तर

0

जहाँ तक मैं कह सकता हूं, यह बग ओएस एक्स 10.8 (माउंटेन शेर) में तय किया गया है।

ऐसा लगता है कि मुझे अपने ऐप के लिए न्यूनतम ओएस संस्करण 10.8 बनाना होगा। वास्तव में मेरे लिए एक बड़ा सौदा नहीं है ... लेकिन उम्मीद है कि ऐप्पल इसे 10.7 पर बगफिक्स में ठीक कर देता है (10.8 के लिए सिस्टम आवश्यकताएं 10.7 से काफी अधिक हैं, मैं उन लोगों को जानता हूं जो अपग्रेड नहीं कर सकते हैं)।

+0

क्या आप वाकई इसे ठीक कर चुके हैं? मुझे 10.8.2 पर यह वही समस्या है - मेरे द्वारा बनाई गई सभी फाइलों को क्वारंटाइन किया जा रहा है। –

+0

@DennisRitchie अगर मैं TextEdit में एक नया सादा पाठ दस्तावेज़ बनाता हूं, और इसे डेस्कटॉप पर "test.rb" के रूप में सहेजता हूं तो फ़ाइल को क्वारंटाइन नहीं किया जाता है। ओएस एक्स 10.7 पर इसे क्वारंटाइन किया गया होगा। शायद ऐसी अन्य स्थितियां हैं जहां एक ही चीज हो सकती है? मुझे लगता है कि आपको मेरा नया प्रश्न अलग करना चाहिए। –

+3

10.8 में मेरे लिए तय नहीं है। अजीब बात यह है कि 'com.apple.security.files.user-selected.executable' को एंटाइटेलमेंट में जोड़ना मेरे लिए समस्या को हल करता है – user1259710

1

यह सुनिश्चित करने का प्रयास करें कि LSFileQuarantineEnabled आपकी Info.plist में false (जो डिफ़ॉल्ट होना चाहिए) पर सेट है। यदि विशेषता अभी भी सेट की जा रही है, तो मैं removexattr(2)/fremovexattr(2)

+0

धन्यवाद, मेरे प्लिस्ट में उस प्रविष्टि को समस्या को हल करता है, हालांकि दस्तावेज स्पष्ट रूप से बताता है कि कोई डिफ़ॉल्ट नहीं है, शायद उन्होंने इसे 10.7.3 में YES में बदल दिया है। –

+0

असल में, यह बदलता प्रतीत नहीं होता है (यह सुनिश्चित नहीं है कि क्या हो रहा है?) मुझे यकीन है कि मैंने इसका परीक्षण किया है, लेकिन अब मैं वही संगरोध बिट सेट देख रहा हूं, भले ही मेरे ऐप में अभी भी 'LSFileQuarantineEnabled' सेट है 'NO'। –

+0

एक बग फ़ाइल करें और ध्वज को मैन्युअल रूप से हटाने का प्रयास करें। –

1

जानना अच्छा लगा कि मैं इस समस्या के साथ अकेला नहीं हूं - जिसे ट्रैक करना मुश्किल हो गया है, मुझे एक बग रिपोर्ट दर्ज करना और इसे प्रोग्रामेटिक रूप से हटा देना है। -डाउन जानकारी पर। मुझे पता चला है कि यह समस्या मेरे प्रोग्राम द्वारा सहेजी गई डेटा फ़ाइलों के साथ होती है (ये स्क्रिप्ट नहीं हैं, वे केवल एक्सएमएल डेटा हैं ...)।

मैं पुष्टि करता हूं कि LSFileQuarantineEnabled ने कोई फर्क नहीं पड़ता।

मैंने हटाने के बाद फ़ाइल को लिखा जाने के बाद विशेषता को हटाने का प्रयास किया, हटाए गए http://hints.macworld.com/article.php?story=20071029151619619 का उपयोग करके, लेकिन यह काम नहीं करता - सैंडबॉक्स ने कॉल को काम करने से रोक दिया। http://reviews.cnet.com/8301-13727_7-57374676-263/workarounds-for-quarantine-bug-in-os-x-lion/

रिकॉर्ड के लिए, मैं अलग से एप्पल के साथ एक बग उठाया गया है:

पृष्ठभूमि के वैसे, मैं भी इस समस्या की इस चर्चा पाया।

संपादित करें: मुझे समस्या का स्रोत मिला है, और काम-आसपास के बारे में पता चला है।

समस्या यह थी कि यदि फ़ाइल डेटा सादा XML प्रारूप डेटा है, तो मैकोज़ गलती से रिपोर्ट किए गए संदेश को प्रदर्शित करता है (मुझे लगता है कि ऐसा इसलिए है क्योंकि यह गलत मानता है कि फ़ाइल एक स्क्रिप्ट है)। अगर मैं फ़ाइल प्रारूप को एक विकल्प के रूप में बदलता हूं जो स्पष्ट रूप से एक्सएमएल नहीं है, तो चेतावनी गायब हो जाती है। फ़ाइल अभी भी संगरोध बिट सेट के साथ सहेजा गया है, हालांकि!

तो यह निश्चित रूप से मैकोज़ में किसी समस्या के कारण है, लेकिन अपेक्षाकृत आसान काम है - बस अपना फ़ाइल प्रारूप बदलें!

+0

ऐसा लगता है कि यह ओएस एक्स 10.8 में तय किया गया है (मैं इसके साथ अपने प्रश्न का उत्तर देने जा रहा हूं, लेकिन यह सुनिश्चित करने के लिए टिप्पणी करना चाहता हूं कि आप पता लगाएंगे)। मुझे लगता है कि हमें बस हमारे सैंडबॉक्स किए गए ऐप्स को 10.8 की आवश्यकता है। –

+0

अबी के लिए धन्यवाद! – Pete

संबंधित मुद्दे

 संबंधित मुद्दे