ऑपरेशन की अनुमति नहीं है जब रूट पर - एल कैपिटन (जड़ रहित)


236

मैं OS X El Capitan पर / usr / bin से कुछ स्थानांतरित करने का प्रयास कर रहा हूं । मैंने निम्नलिखित आदेशों का उपयोग करते हुए मूल को अक्षम कर दिया है: sudo nvram boot-args="rootless=0"; sudo rebootलेकिन मुझे वही त्रुटि मिलती रहती है:

MacBook-Air:~ Mark$ sudo cp class-dump /usr/bin
Password:
cp: /usr/bin/class-dump: Operation not permitted
MacBook-Air:~ Mark$ sudo mv class-dump /usr/bin
mv: rename class-dump to /usr/bin/class-dump: Operation not permitted

14
आप क्लास-डंप / यूएसआर / बिन में डालने की कोशिश क्यों कर रहे हैं? स्थानीय जोड़ / usr / स्थानीय / बिन में हैं, और जड़हीन आपको चीजों को वहां रखने की अनुमति देता है ...
गॉर्डन डेविसन

1
बस ~ / .bash_profile में एक उपनाम बनाएं और / usr / bin
वारेन पी

5
क्लास-डंप का उपयोग सीधे प्रोग्रामिंग के लिए किया जाता है (रिवर्स इंजीनियरिंग टूल - सीधे प्रोग्रामिंग के लिए), इसलिए समापन का कारण मान्य नहीं लगता है। इसके अलावा, 28 स्टार, लगभग 40 प्रश्न अपवोट और 90 उत्तर अपवोट्स का अर्थ है कि प्रश्न उपयोगी है।
Vive

रिवर्स इंजीनियरिंग क्योंकि इसका उपयोग कक्षाओं की सूची प्राप्त करने के लिए किया जाता है?
marciokoko

जवाबों:


355

NVM। किसी और को यह समस्या होने पर आपको अपने मैक को रिबूट करने की जरूरत है और बूट करते समय boot + R दबाएं । फिर यूटिलिटीज> टर्मिनल में जाएं और निम्न कमांड टाइप करें:

csrutil disable
reboot 

यह सिस्टम इंटीग्रिटी प्रोटेक्शन का एक परिणाम है। अधिक जानकारी यहाँ

संपादित करें

यदि आप जानते हैं कि आप क्या कर रहे हैं और लिनक्स चलाने के लिए उपयोग किया जाता है, तो आपको उपरोक्त समाधान का उपयोग करना चाहिए क्योंकि एसआईपी प्रतिबंधों में से कई गधे में एक पूर्ण दर्द हैं।

हालाँकि, यदि आप एक टिंकरर / नॉब / "पॉवरुसर" हैं और नहीं जानते कि आप क्या कर रहे हैं, तो यह बहुत खतरनाक हो सकता है और नीचे दिए गए उत्तर का उपयोग करके आप बेहतर बंद हो जाएंगे ।


2
@ क्रिस, आपको सीएमडी + आर के साथ फिर से रिबूट करने की आवश्यकता होगी, टर्मिनल खोलें और चलाएं csrutil enable; reboot। दुर्भाग्य से कमांड सामान्य मोड में काम नहीं करता है।
अलेक्जेंडर काचकेव

7
@AlexanderKachkaev हां, मैंने यही किया है। मैं सिर्फ यह बताना चाहता था कि परिवर्तनों को करने के बाद कभी भी किसी को इसे फिर से सक्षम करना चाहिए ! अन्यथा सिस्टम अखंडता संरक्षण स्थायी रूप से अक्षम हो जाता है जिससे गंभीर समस्याएं हो सकती हैं।
क्रिस

9
यदि आप कुछ ऐसी चीज़ों को हटाते / संशोधित करते हैं, जिन्हें आप हटाना / संशोधित नहीं कर रहे हैं, तो यह केवल गंभीर समस्याएँ पैदा करेगा। दूसरे शब्दों में, यदि आप जानते हैं कि आप क्या कर रहे हैं, तो इसे अक्षम करना पूरी तरह से सुरक्षित है।
क्लिंटन

16
कोई भी लिनक्स पर चलने के लिए उपयोग करने की संभावना है कि यह अक्षम को छोड़ देगा। यह गधे का पूरा दर्द है।
एमएसचूएट

3
@ यह किसी भी कार से टकराने से बचने के लिए अपने कार्यालय की कुर्सी पर खुद को हथकड़ी लगाने का कोई मतलब नहीं है ... दूसरे शब्दों में ... यदि आप सड़क पार करने से पहले दोनों तरीके देखना जानते हैं ... यह पूरी तरह से सुरक्षित नहीं है एक कुर्सी के लिए खुद को हथकड़ी लगाने के लिए
क्लिंटन

254

सही समाधान कॉपी या इंस्टॉल /usr/local/binनहीं करना है /usr/bin। यह सिस्टम इंटीग्रिटी प्रोटेक्शन (एसआईपी) के कारण है । SIP /usr/binरीड-ओनली बनाता है लेकिन /usr/localरीड-राइट के रूप में छोड़ देता है

SIP को ऊपर दिए गए उत्तर के अनुसार अक्षम नहीं किया जाना चाहिए क्योंकि यह मैलवेयर एक्सेस रूट एक्सेस के विरुद्ध सुरक्षा की एक और परत जोड़ता है। यहां एक पूर्ण विवरण दिया गया है कि एसआईपी क्या करता है और यह क्यों उपयोगी है।

जैसा कि इस उत्तर में सुझाव दिया गया है कि किसी को एसआईपी (रूटलेस मोड) को निष्क्रिय नहीं करना चाहिए " रूटलेस मोड को अक्षम करने की अनुशंसा नहीं की जाती है! सबसे अच्छा अभ्यास केवल" / usr / स्थानीय "कस्टम सामान स्थापित करना है।"


8
इससे मेरा मुद्दा ठीक हो गया। लिंक के लिए धन्यवाद! रिकवरी मोड में रूटलेस या डिसेबल चीजों को जाना सुपर खतरनाक लगता था! खुशी है कि मैंने यह पाया।
22

1
यह मेरे लिए काफी मुश्किल नहीं था - मेरे पास मेरे bashrc उपनामों में कुछ भाग्य अलियासिंग (उदाहरण के लिए, मेरे मामले में) javaथा /usr/local/bin/java, जब मैंने उस फ़ोल्डर में उपयुक्त लिंक बनाया जैसा कि यह उत्तर बताता है।
एली अल्बर्ट

इस जवाब से मेरी समस्या पूरी तरह हल हो गई। यह स्वीकृत उत्तर होना चाहिए क्योंकि इसके लिए सिस्टम में कोई संशोधन नहीं होना चाहिए और कोई रिबूट नहीं होना चाहिए।
Stephan

तो, क्या यह किसी rmभी चीज़ में कोई रास्ता नहीं छोड़ता है /usr/bin/? मैं समझता हूं कि एसआईपी का उद्देश्य है, लेकिन एक विशिष्ट निष्पादन योग्य को हटाना चाहते हैं।
ब्रैड सुलैमान

1
मेरे पास /usr/local/binमेरे रास्ते में है और 1.0.2n खुलता है, सही ढंग से सहानुभूति रखता है, /usr/local/bin/opensslलेकिन हर बार जब मैं ऐसा करता हूं which opensslतब भी पता चलता है /usr/bin/opensslकि यह पुराना OpenSSL 0.9.8zh 14 Jan 2016संस्करण है। मैं अपने सिस्टम को /usr/local/bin/opensslदूसरे से अधिक पसंद करने के लिए कैसे प्राप्त करूं ?
फ्रांसिस्क0

15

यदि आप नियंत्रण रखना चाहते हैं /usr/bin/

आपको अपने सिस्टम को रिबूट करना होगा:

बूट ध्वनि के ठीक बाद, रिकवरी सिस्टम में बूट करने के लिए कमांड-आर दबाए रखें

यूटिलिटीज मेनू पर क्लिक करें और टर्मिनल चुनें

Csrutil अक्षम करें और रिटर्न दबाएँ

 मेनू पर क्लिक करें और पुनरारंभ करें का चयन करें

एक बार जब आप अपने परिवर्तन कर लेते हैं, तो SIP को पुन: सक्षम करना सुनिश्चित करें! यह आपके सिस्टम की सुरक्षा के लिए बहुत कुछ करता है। (प्रकार को छोड़कर ऊपर के समान चरण: csrutil सक्षम करें)


0

अगर "csrutil अक्षम" कॉल करने के बाद भी आपका कमांड काम नहीं करता है, तो टर्मिनल में "sudo" के साथ प्रयास करें, उदाहरण के लिए:

sudo mv geckodriver /usr/local/bin

और यह काम करना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.