Appleは、OS X 10.11、El Capitanで「ルートレス」としても知られるSystem Integrity Protectionを導入しました。これはマルウェアに対する一般的な保護のステップであることを理解していますが、開発者として、ロックされているファイルの一部への書き込みアクセスが必要です。
この保護を無効にするにはどうすればよいですか?
Appleは、OS X 10.11、El Capitanで「ルートレス」としても知られるSystem Integrity Protectionを導入しました。これはマルウェアに対する一般的な保護のステップであることを理解していますが、開発者として、ロックされているファイルの一部への書き込みアクセスが必要です。
この保護を無効にするにはどうすればよいですか?
回答:
Appleのドキュメントは、SIPを無効にカバーし、お使いのMac上のシステムの整合性の保護についてと設定システムの整合性の保護。
lifehacker.comの記事には次の手順が記載されています。
- コンピューターを再起動し、Appleロゴが画面に表示されるまでCommand+ を押して、Macを回復モードで再起動しますR。
- [ユーティリティ]> [ターミナル]をクリックします。
- ターミナルウィンドウで、入力し
csrutil disable
、を押しEnterます。- Macを再起動します。
ls
大文字のO(ゼロ0ではない)を使用してこのコマンドを発行し、長いリストフラグを変更することにより、ファイルまたはフォルダーが制限されているかどうかを確認できます。
ls -lO /System /usr
SIPが実施される場所を示す制限付きテキストを探します。
デフォルト(= SIP対応)では、次のフォルダーが制限されています(Appleサポートページを参照)。
/System
/usr
/bin
/sbin
Apps that are pre-installed with OS X
...および次のフォルダは無料です:
/Applications
/Library
/usr/local
ls -lO /usr/local
は制限付きとしてマークされていません。また、/usr/local/
再帰的にchowndしました。しかし、私はrootがhomebrewの所有権を取り/usr/local/bin
、/usr/local/share
それがhomebrewに影響を与えるのを見続けています。これもSIPの仕事ですか?
/usr/local
制限されていない限り、このディレクトリの「下」にある権限を簡単に修正できます。Homebrewは、実際にはsudo chown -R $(whoami) /usr/local
(管理者ユーザーとしてログインしている間)実行して、アクセス許可の問題を修正することを推奨しています。
/usr/local
アクセス許可が正しく設定されたことを確認しました。
Recovery HDから起動して次のコマンドを実行することにより、SIPを無効にすることができます。
csrutil disable
csrutil enable
コマンドに1つ以上のフラグを追加することにより、SIP保護を有効にし、その側面を選択的に無効にすることもできます。これらを設定するには、すべてRecoveryから起動する必要があります。
SIPを有効にして、署名されていないカーネル拡張機能のインストールを許可します
csrutil enable --without kext
SIPを有効にし、ファイルシステム保護を無効にします
csrutil enable --without fs
SIPを有効にし、デバッグ制限を無効にします
csrutil enable --without debug
SIPを有効にし、DTraceの制限を無効にします
csrutil enable --without dtrace
SIPを有効にし、NVRAMへの書き込みの制限を無効にします
csrutil enable --without nvram
また、SIPに関する詳細な情報を掲載した投稿もあります。
csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.
目標が本当にSystem Integrity Protectionを無効にすることである場合、ここで他の回答で以前に推奨されたようにRecovery HDパーティションを起動時にCommand+ rで起動することは、これを行う最速の方法ではありません。
文書化されていないスタートアップキーの組み合わせで、シングルユーザーモードブートとリカバリHDブートを組み合わせることができます。
これにより、これに必要な最低限の環境に直接入ります。
それが単に前である/etc/paths
ように変更するのはより安全です。そうすれば、SIPを無効にすることなく、内部で開発作業を行うことができます。/usr/local/bin
usr/bin
/usr/local/bin
OSのクリーンインストールは/etc/paths
El Capitan以降、この方法で注文していますが、OSをYosemite以前からアップグレードする場合は、パスの順序を手動で変更する必要があります。
usr/bin
でした。SIPはこれを防ぐため、プログラムはにインストールする必要がありますusr/local/bin
。これはSIPによって制限されません。usr/local/bin
最初に置くことにより、ユーザーはプログラムへの絶対パスを入力することなくプログラムを実行できます。これは理にかなっていますか?他のことについて混乱していますか?
/usr/bin
...しかし、私が尋ねるべきだったのは「このOPはOPの質問にどのように答えますか?」私はもともと、何らかの方法でそれが行われ、接続を確立していないと仮定していました。しかし、今、私はそれが何らかの接続を持っていることを非常に疑います。
/ usr / localにアクセスするだけであれば、次のページをご覧ください:https : //github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md
アイデアは、を使用して一時的に SIPを無効にしcsrutil disable
、/usr/local
chflagsを使用してそのディレクトリを制限なしに設定することです
sudo mkdir /usr/local && sudo chflags norestricted /usr/local && sudo chown -R $(whoami):admin /usr/local
次に、を使用してSIPを再度有効にしcsrutil enable
ます。
/usr/local
アップグレード時に既に存在している場合、上記でさえ必要ありません。簡単に実行できます
sudo chown -R $(whoami):admin /usr/local
Read-only file system
(SIPを無効にするために)実行するためにリカバリパーティションに入ることができない場合は、コマンドでブート引数を設定してみてください。例えばcsrutil disable
nvram
sudo nvram boot-args="rootless=0"
ただし、次のエラーが発生した場合:
nvram:変数の設定エラー-'boot-args':(iokit / common)not allowed
それは動作しません。リカバリ/セーフモードで起動する必要があります。
見る:
nvram: Error setting variable - 'boot-args': (iokit/common) not permitted
これを上記のgithub Homebrew 404リンクにコメントとして追加するほどの評判はありません。Wayback Machineにはまだあります: