System Integrity Protection(SIP)は、システムファイルやプロセスが第三者によって変更されるのを防ぐことを目的とした総合的なセキュリティポリシーです。これを実現するために、次のような概念があります。
- ファイルシステム保護
- カーネル拡張保護
- ランタイム保護
ファイルシステム保護
SIPは、Apple以外の関係者が特定のディレクトリに格納されているディレクトリおよびファイルを追加、削除、または変更することを防ぎます。
/bin
/sbin
/usr
/System
開発者がアクセスできるディレクトリは次のとおりです。
/usr/local
/Applications
/Library
~/Library
内のすべてのディレクトリ /usr
を除いて /usr/local
SIPによって保護されています。
Apple独自の認証局によって署名されているインストーラパッケージを介して、SIPで保護されたファイルやディレクトリを追加、削除、変更することが可能です。これにより、Appleは既存のSIP保護を変更する必要なしに、OSのSIP保護された部分に変更を加えることができます。
問題の認証局は、アップルが独自に使用するために予約されています。開発者IDで署名されたインストーラパッケージは、SIPで保護されたファイルまたはディレクトリを変更することはできません。
保護するディレクトリを定義するために、Appleは現在ファイルシステム上に2つの設定ファイルを定義しています。主なものは、以下の場所にあります。
/System/Library/Sandbox/rootless.conf
どこで rootless.conf
SIPが保護しているすべてのアプリケーションと最上位ディレクトリを一覧表示します。
アプリケーション
SIPは、OS Xがアプリケーションとアプリケーションユーティリティにインストールするコアアプリケーションを保護しています。これは、root権限を使用している場合でもコマンドラインからでも、OS Xがインストールしたアプリケーションを削除できなくなることを意味します。
ディレクトリ
SIPは、外部の多数のディレクトリやシンボリックリンクも保護しています。 /Applications
そしてそれらのディレクトリのトップレベルも rootless.conf
。
保護に加えて、アップルはrootless.confファイルでSIPの保護に対するいくつかの例外も定義しており、それらの例外はアスタリスクでマークされています。 SIPの保護からのこれらの免除は、それらの場所内のファイルとディレクトリを追加、削除、または変更することが可能であることを意味します。
これらの例外には、次のものがあります。
/System/Library/User Template
- OS Xがテンプレートを保存する場所
新しいアカウント用のホームフォルダを作成するときに使用するディレクトリ。
/usr/libexec/cups
- OS Xがプリンタ設定を保存する場所
情報
Appleはこのファイルを自分のものとみなし、第三者によるこのファイルへの変更はAppleによって上書きされると考えています。
どのファイルがSIPによって保護されているかを確認するには、 ls
コマンド ターミナルのダッシュの首都Oを使って:
ls -O
SIPで保護されたファイルには 制限された 。
知っておくべき重要なことの1つは、シンボリックリンクがSIPによって保護されている場合でも、リンク先のディレクトリがSIPによって保護されていることを必ずしも意味するわけではないことです。 OS X El Capitanブートドライブのルートレベルには、次の名前のルートレベルディレクトリ内に格納されているディレクトリを指す、SIPで保護されたシンボリックリンクがいくつかあります。 private
。
ただし、その内容が private
ディレクトリが調べられ、それらのシンボリックリンクが指すディレクトリはSIPによって保護されず、それらとその内容の両方はroot権限を使用するプロセスによって移動、編集または変更されることができます。
Appleが設定したSIP例外のリストに加えて rootless.conf
、SIP例外の2番目のリストがあります。この一覧には、サードパーティ製品のディレクトリとアプリケーション名が多数含まれています。に似ている rootless.conf
、この除外リストはAppleのものであり、それに対するいかなる第三者の変更もAppleによって上書きされるでしょう。
/System/Library/Sandbox/Compatibility.bundle/Contents/Resources/paths
ランタイム保護
SIPの保護は、ファイルシステムの変更からシステムを保護することだけにとどまりません。機能が制限されているシステムコールもあります。
- task_for_pid()/ processor_set_tasks()がEPERMで失敗する
- Mach特殊ポートはexec(2)でリセットされます
- dyld環境変数は無視されます
- DTraceプローブは利用できません
ただし、SIPは、開発中の開発者による独自のアプリケーションの検査をブロックしません。 Xcodeのツールにより、開発プロセス中にアプリの検査とデバッグが可能になります。
この詳細については、私は見てみることをお勧めします SIPに関するアップルの開発者向けドキュメント 。
カーネル拡張保護
SIPは、未署名のカーネル拡張のインストールをブロックします。 SIPが有効になっているOS X El Capitanにカーネルエクステンションをインストールするには、カーネルエクステンションは次の条件を満たす必要があります。
- で署名する Signing Kextsの開発者ID 証明書
- にインストール /ライブラリ/ Extensions
無署名のカーネル拡張をインストールする場合は、最初にSIPを無効にする必要があります。
SIP管理の詳細については、以下のリンクをご覧ください。
システムの整合性保護 - アップルのセキュリティモデルに新たな層を追加する
sudo
そしてパスワードの入力要求は通常通り/以前/予想通りに機能しました。ですから、おそらく答えは「ほとんど気づかないでしょう。気がつくと、きっと気づくでしょう」