Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@feat2kj

EL CAPITANのrootless(SIP)の話

今作っているアプリがライブラリなども使っていなくて、特に意識しなかったんだけど
最近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)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
9
Help us understand the problem. What are the problem?