OS X 10.11 El Capitanのシステム保護機能「Rootless」を無効にするcsrutilコマンドの使い方。

El Capitan
記事内に広告が含まれています。
スポンサーリンク

 OS X 10.11 El Capitanのシステム整合性保護機能「Rootless」を無効にする方法です。詳細は以下から。

OS X 10.11 El Capitan

 OS X 10.11 El CapitanではOS Xの新たなセキュリティ整合性保護機能(SIP: System Integrity Protection)通称”Rootless”が導入されており、例え管理者権限(root)であっても、

Mac のシステム整合性保護について

システム整合性保護は、OS X El Capitan 以降で採用されているセキュリティ技術です。Mac 上の保護されたファイルやフォルダを改ざんしようとする悪質なソフトウェアからデータを守ります。システム整合性保護では、ルートユーザアカウントに制約を課し、Mac オペレーティングシステムの保護されている部分に対してルートユーザが実行できる操作を制限します。

Mac のシステム整合性保護について – Apple

  • /System
  • /bin
  • /usr
  • /sbin

システム的に重要な上記のディレクトリへのファイルの作成が出来なくなっていますが、Appleは開発者向けにこのRootlessを操作するコマンド”csrutil”を提供しています。

SIPの対象となるディレクトリ

csrutilコマンド

 csrutilコマンドはEl Capitanから新たに加わったコマンドラインツールで、clear, disable, enable, status,netbootといったオプションが用意されており、SIPのチェックや有効/無効を行うことが出来ます。

SIP:RootlessをOFFにする

 まず、使用しているMacがどのようなセキュリティ状態になるかを調べるためにターミナルで“csrutil status”と入力してみてください。現在の状態(ステータス)が表示され、enabledならSIPがON、diabledならSIPがOFFになっている状態です。SIPをOFFにするためにはdiableオプションを付けるだけでいいのですが、”csrutil disable”と入力すると以下の様なエラーが返ってくると思います、

csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.

 これはcsrutilのmanにもあるようにcsrutilコマンドのclear, disable, enabledオプションはリカバリーモードしか使用できないためで、このオプションを利用するために一度Macの電源をOFFにし、[Command + R]を押しながらMacを起動、その後メニューバーの[ウィンドウ] > [ターミナル] を選択し、”csrutil disable”と入力すればSIPをOFFにすることが可能です。

macOSでシステム整合性保護機能をOFFにする方法

Successfully disabled System Integrity Protection. Plsase restart the machine for the changes to take effect.

RootlessのOFF後は”csrutil status”の表示が以下のようになり、Apple InternalやKext Signing, Filesystem Protections, Debugging Restrictions, Dtrace Restrictions, NVRAM Protectionsなど全てがdisableになり、/binなどにファイルを作成することが可能になります。

おまけ

 OS X 10.11 El Capitan Beta版であったSIPをON/OFFにするGUIツールは無くなってしまいましたが、kextをインストールしたり、/bin, /usrなどを利用するユーザーでしたらcsrutilコマンドの利用も問題ないと思います。

ですが、SIPをOFFにすることでEl Capitanが脆弱になるため多くの開発者がこの機能をONにした状態でも問題ないアプリを提供[1, 2, 3]しようとしているので、むやみにOFFにしないことをお勧めします。

関連リンク

コメント

  1. Apple7743 より:

    これでXtraFinderって使えます?

  2. Apple7743 より:

    通常のログイン状態でターミナルを起動し、csrutilコマンドを打つと現在の状態がちゃんと出るのですが、リカバリーモードでターミナルを起動してコマンドを打つと、command not foundが返って来てしまいます。なぜでしょうか。。

    • 匿名 より:

      私も同じ現象に陥っています。その後解決致しましたか?
      解決策をお知らせ頂けると嬉しいです。

      • 管理人 より:

        rootlessを有効にする方法は “csrutil disable”と逆です。
        具体的には
        1.[Command + R]を押しながらMacを起動
        2.メニューバーの[ウィンドウ] > [ターミナル] を選択
        3.csrutil enable
        と入力するとで有効になるはずです。

    • 匿名 より:

      もう解決されたかもしれませんが、コマンドのパスが通っていないのかも。
      通常のログイン状態でターミナルから which csrutil と打ってフルパスを調べてそのフルパスをリカバリーモードで入力したらどうでしょうか。

    • 匿名 より:

      大変今更ではありますが,私も同様のケースに遭遇しました.
      OS X ユーティリティのバージョンが古いのが原因のようで,
      Command + Rではなく
      Option + Command + Rを押しながら起動し,
      最新バージョンのmacOSユーティリティを(インターネット経由でダウンロードして)起動することで解決しました.

  3. Apple7743 より:

    「Rootless」無効を戻す方法がどうすれば良いでしょうか

  4. Apple7743 より:

    が→は

  5. […] 者権限(root)であっても”/System”, “/bin”, “/usr”, “/sbin”ディレクトリにファイルの作成が出来なくなっています Appleちゃんねる(http://applech2.com/archives/46435268.html) […]

  6. 匿名 より:

    無効にならず、Failedとでます。

タイトルとURLをコピーしました