システム整合性保護(SIP) の再有効化手順

macOSに組み込まれているシステム整合性保護 (SIP: System Integrity Protection) 機能を一時的に無効化して、再度有効化するときの手順についてです。T2チップなどがなく、昔のmacOSでは単純に有効化するだけでも問題なかったと思うのですが、MacBook Pro 2020 M1 と macOS 12 Monterey の組み合わせでは問題が起きました。

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

システム整合性保護 (SIP: System Integrity Protection) はOS X 10.11 ElCapitan から導入されたセキュリティ機能です。ルートアカウントを制限し、特定のディレクトリにはルート権限であっても変更ができなくなります。

詳細については、こちらをご覧ください。

Mac のシステム整合性保護について – Apple サポート (日本)

SIPの無効化について

この機能を無効化するということはセキュリティリスクの高い行為であるということははっきりしていますが、無効化する必要があるときがあります。例えば、KEXT (Kernel Extension) やDEXT (DriveKit Extension) などのドライバ開発時、CoreMediaIO DAL (Device Abtraction Layer) Pluginの開発時などです。

開発中のプログラムはデバッグ用のビルドになっていたり、一部をデバッガで実行したりします。また、本来のインストール先ディレクトリとは別のディレクトリで実行することもあります。このようなときにSIPによって制限されてしまうと開発中のプログラムを実行できません。そのため、開発中のプログラムを動かせるようにするためにSIPを無効化します。

SIPの無効化手順

SIPを無効化するには、次のように操作します。

(1) Macをリカバリーモードで起動する。

Apple Silicon Mac : システムをシャットダウンし、電源ボタンを押したままメッセージが表示され、押し続けるように指示されている間、電源ボタンを押したままにする。

Intel Mac : システムをシャットダウンし、USB接続キーボードの場合は、CommandキーとRキーを押したまま、電源を入れる。Bluetooth接続のキーボードの場合は、電源をオンにしたときのブート音が聞こえた直後にCommandキーとRキーを押しはじめて、押したままにする。

(2) ターミナルを起動する

(3) csrutilで無効化する

% csrutil disable

(4) 再起動する

% reboot

SIPの有効化手順

開発がある程度終盤になり、リリースビルドに切り替えた後は、エンドユーザーと同じ場所にインストールして、エンドユーザーと同じ状態で動作試験を行います。その段階になったらSIPを有効化しましょう。SIPを有効化した後は、Notarizeも必要になります。

SIPの有効化するには、次のように操作します。本来はcsrutil enableだけで戻るのですが、GateKeeperのキャッシュDBが壊れた状態になることがあり、次のような手順が必要でした。

(1) Macをリカバリーモードで起動し、ターミナルを起動する

(3) SIPの情報をクリアして、再起動する

% csrutil clear

% reboot

(4) Macをリカバリーモードで起動し、ターミナルを起動する

(5) KEXTの承認情報をクリアする

% kmutil trigger-panic-medic --volume-root /

(6) 再起動する

% reboot

(7) もう一度再起動する

(8) USB機器などを何かしらを接続する

(9) 「セキュリティ環境設定」を開き、認識されたドライバ類を承認する

(10) 再起動する

(11) Macをリカバリーモードで起動し、ターミナルを起動する

(12) SIPの設定を確認する

% csrutil status

(13) もし、disableになっていたら、次のようにして有効化します。通常はclearenableになっていると思います。

% csrutil enable

(14) 再起動する

% reboot

セキュリティポリシーが高セキュリティに戻っているので、サードパーティのKEXTはロードされません。サードパーティのKEXTが必要な場合は、セキュリティポリシーを変更してください。

手順(4)から(10)はドライバ(KEXT)の許可を取り消す操作です。こちらについては別の記事でも解説しています。

セキュリティポリシーについては、次の記事もご覧ください。

投稿者プロフィール

林 晃
林 晃アプリ開発者
アールケー開発代表。Appleプラットフォーム向けのアプリ開発が好きなアプリ開発者。アプリの受託開発、技術書執筆、技術指導・セミナー講師。3DCGコンテンツ作成にも取組中です。

基礎から学ぶARKit


「基礎から学ぶARKit」を執筆しました。本書はARKitを使ったARアプリの開発方法を解説した技術書です。

ARKitを使ってARアプリを作るときの流れや基本的なAPIの使い方などをサンプルアプリを作りながら学べます。

詳細

基礎から学ぶMetal


「基礎から学ぶMetal」を執筆しました。本書はMetalを使ってGPUプログラミングを行うための最初のステップを解説するMetalの解説書です。

私が初めてGPUプログラミングを行ったとき、どこから手をつけて、学んでいけば良いのか分からず呆然としました。もし、あのとき、これを教えてくれればという部分を解説しました。本書で解説している部分はMetalの基礎となる部分で、Metalを使うときに必ず触れることになる部分です。

詳細

関連記事

  1. 【2020/4/1更新】【Swift|ObjC 】 UIWebView…

  2. OpenCVで使われている並列化を見てみる

  3. HTTPのステータスコードへの対応

  4. Cのバイナリデータを確保する処理をSwiftで書く

  5. 【2020/2/10更新】UIWebViewは廃止

  6. 【Python】loggingを使ってログを出力する

最近の著書

  1. 基礎から学ぶ SwiftUI

最近の記事