ルート上での操作は許可されていません-El Capitan(ルートレス無効)


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 / binに入れようとしているのですか?ローカル追加は/ usr / local / binに属し、rootlessを使用すると、そこに物を置くことができます...
Gordon Davisson '19

1
〜/ .bash_profileにエイリアスを作成し、/ usr / binを使用しないでください
Warren P

5
class-dumpは直接プログラミング(リバースエンジニアリングツール-直接プログラミング)に使用されるため、閉じる理由は妥当ではないように思われます。その上、28の星、ほぼ40の質問の賛成票と90の回答の賛成票は、質問が役立つことを意味します。
2016

クラスのリストを取得するために使用されるため、リバースエンジニアリング?
marciokoko

回答:


355

NVM。この問題が発生している場合は、Macを再起動し、起動時に⌘+ Rを押す必要があります。次に、[ユーティリティ]> [ターミナル]に移動し、次のコマンドを入力します。

csrutil disable
reboot 

これは、システム整合性保護の結果です。詳細はこちら

編集

Linuxの実行に慣れていて慣れている場合は、上記のソリューションを使用する必要があります。SIPの制限の多くはお尻の痛みです。

ただし、あなたがいじくり回し/ noob /「パワーユーザー」であり、何をしているのかわからない場合、これは非常に危険な場合があるため、以下の回答を使用することをお勧めします


2
@Chris、もう一度CMD + Rで再起動し、ターミナルを開いてを実行する必要がありますcsrutil enable; reboot。残念ながら、このコマンドは通常モードでは機能しません。
Alexander Kachkaev、2016年

7
@AlexanderKachkaevうん、それは私がやったことです。変更を実行した後は、誰もがそれを再び有効にする必要があることを指摘したかっただけです!そうしないと、システムの整合性保護が永続的に無効になり、深刻な問題が発生する可能性があります。
Chris

9
削除/変更してはならないものを削除/変更した場合にのみ、深刻な問題が発生します。つまり、何をしているのかわかっている場合は、無効のままにしておくのが安全です。
Clintm

16
Linuxでの実行に慣れている人は、おそらくこれを無効にしておくことでしょう。お尻がすごく痛いです。
mschuett 2016

3
@Chris車にぶつからないようにオフィスの椅子に手錠をかけても意味がありません...言い換えれば...通りを渡る前に両方の方向を見ることがわかっていれば...完全に安全ではありません自分で椅子に手錠をかける
Clintm

254

正しい解決策は、コピーまたはインストールし/usr/local/binないことです/usr/bin。これは、システム整合性保護(SIP)が原因です。です。SIPは/usr/bin読み取り専用にしますが/usr/local、読み書きのままにします。

ルートアクセスを取得するマルウェアに対する別の保護層を追加するため、上記の回答で述べたようにSIPを無効にしないでください。ここでは、SIPの機能と、SIPが役立つ理由について詳しく説明します。

この回答で提案されているように、SIP(ルートレスモード)を無効にしないでください。「ルートレスモードを無効にすることはお勧めしません。カスタムスタッフを「/ usr / local」のみにインストールすることをお勧めします。」


8
これで問題が解決しました。リンクをありがとう!回復モードでrootlessになるか物事を無効にすることは非常に危険に思われました!嬉しいです。
caokey

1
これは非常に私のためのトリックをしなかった-私は(例えば、私の場合は)いくつかの幸運のエイリアシングを持っていたjava/usr/local/bin/java、この答えは示唆するように、私はそのフォルダ内の適切なリンクを作った後、私のbashrcにエイリアスインチ
Eli Albert

この答えは私の問題を完全に解決しました。これは、システムの変更や再起動の必要がないため、受け入れられる答えになるはずです。
ステファン

それで、これはrm何にも道を譲らないの/usr/bin/ですか?SIPには目的があることを理解していますが、特定の実行可能ファイルを1つ削除したいと考えています。
Brad Solomon、

1
私が持っている/usr/local/bin私のパスとOpenSSL 1.0.2nで正しくにシンボリックリンクされた/usr/local/bin/opensslが、私はやるたびにwhich openssl、それはまだ示して/usr/bin/openssl古いであるOpenSSL 0.9.8zh 14 Jan 2016バージョン。システムに/usr/local/bin/openssl他のシステムよりも優先させるにはどうすればよいですか?
Francisc0

15

あなたがコントロールしたいなら /usr/bin/

システムを再起動する必要があります。

起動音の直後に、Command-Rを押してリカバリシステムを起動します

[ユーティリティ]メニューをクリックし、[ターミナル]を選択します

csrutil disableと入力してReturnキーを押します

メニューをクリックして[再起動]を選択します

変更をコミットしたら、必ずSIPを再度有効にしてください。それはあなたのシステムを保護するために多くのことをします。(タイプ:csrutil enableを除いて上記と同じ手順)


0

「csrutil disabled」を呼び出した後もコマンドが機能しない場合は、ターミナルで「sudo」を試してください。次に例を示します。

sudo mv geckodriver /usr/local/bin

そしてそれはうまくいくはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.