7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ネイティ部Advent Calendar 2015

Day 2

EL CAPITANのrootless(SIP)の話

Last updated at Posted at 2015-12-02

今作っているアプリがライブラリなども使っていなくて、特に意識しなかったんだけど
最近OSを EL CAPITAN にアップデートしました
ついでに、ライブラリ使おうと思って、cocoaPodsを入れてみた。
その時にrootlessではまったのでメモ

CocoaPodsとは?

iosアプリのライブラリ管理ツールです。
npmやjspmやらそんな位置づけですね。

rootlessとは?

[管理者権限を持つユーザー(rootなど)であっても、Appleが定める特定の重要なファイルにはアクセス出来ない]
EL CAPITAN で導入されたセキュリティ強化によるものだそうです。

対象ディレクトリは以下のコマンドで確認できます。
$cat /System/Library/Sandbox/rootless.conf

上記対象ディレクトリに書き込みを行おうとすると
”Operation not permitted"
メッセージが出てきて実行できませんでした。

cocoaPodsのインストール

通常の手順通り、以下のコマンドを実行しました。

sudo gem update --system
sudo gem install cocoapods

sudo gem update --system
を実行した段階で早速
”Operation not permitted"のメッセージが出てました

rootlessの無効化

権限変更などの手法もあるかもしれませんが、
あまり設定を変えると思わぬとこに影響しそうなので
以下の手順を試しました。

  1. rootless無効化
  2. cocoaPodsインストール
  3. rootless有効化

無効化する手法を調べたところ2パターンあるそうです。

  1. コマンドで対応
  2. リカバリーモードでrootlessを無効設定にする

コマンドで対応

簡単そうだったので、まずこちらを試してみました。
$sudo nvram boot-args=“rootless=0”
上記コマンドの後、PC再起動

そのあと状態を $csrutil status で確認したところ
System Integrity Protection status: enabled (Custom Configuration).
のままだったので、この方法だと自分の環境ではうまくいきませんでした。

リカバリーモードでrootlessを無効設定にする

ちょっと手順はめんどくさいですが以下の手順を試します。

  1. command + R を押しながらマシンを再起動

  2. OS X ユーティリティ画面が表示される

    • TimeMachine バックアップから復元
    • OS X を再インストール
    • ヘルプ情報をオンラインで取得
    • ディスク・・・

とか出てきて、ちょっと緊張しますが、落ち着いて次の作業を

  1. ツールバーから[ユーティリティ] - [ターミナル]でターミナルを起動
  2. $csrutil disable
    Succesfully ・・・が表示される
  3. ターミナルを閉じ、通常モードで再起動

PCが上がってきたら、ターミナルで以下を確認する
$csrutil status System Integrity Protection status: disabled (Custom Configuration).
これでrootlessが無効になっているハズ

再度cocoapodsのインストールを開始
$sudo gem update --system
'sudo gem install cocoapods
正常にインストールできました。

リカバリーモードでrootlessを有効設定にする

必要な設定を、終えたのでrootlessの設定を有効化します
無効化設定と同じ手順で $csrutil disable$csrutil enable にするだけ

再起動したら,ターミナルから
$csrutil status System Integrity Protection status: enabled (Custom Configuration).
になっている事を確認しておきましょう。

まとめ

今回の対応はEl Capitanから発生するものなので、
もしOS アップデートをまだしていなければ、アップデート前にインストールしておく方が
楽だと思います。()brewとかも多分エラーになると思うので)

思わぬところで時間使ってしまったので、ガンプラ制作が少し遅れそうです(ToT)

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?