説明書を読まなくても使い方がわかるのが、iPhoneの魅力であり強みです。しかし、知っているつもりでも正しく理解していないことがあるはず。このコーナーでは、そんな「いまさら聞けないiPhoneのなぜ」をわかりやすく解説します。今回は、『iPhoneにも「root」ってあるの?』という質問に答えます。

***

「root(ルート)」とは、UNIX系OSにおける特権ユーザであり、システムの操作/変更に関する制限がない特別な存在です。iPhoneのシステムであるiOSも、BSD UNIXをルーツに持つUNIX系OSの一種ですから、rootは存在します。

通常、rootは我々一般ユーザの目に入ることはありませんが、システムの稼働に欠かせません。多くのサーバプロセス(システムのバックグラウンドに常駐し各種機能を提供するプログラム)は、ほかのUNIX系OS同様にiOSでもUIDが「0」のユーザ、すなわちrootにより実行されています。GUIにより巧妙に隠ぺいされているにすぎない、と考えればいいでしょう。

隠ぺいされている理由ですが、それはrootの"全能性"にあります。rootはありとあらゆる操作が可能ですから、安易に権限を行使できる状態にしておくと、深刻なシステムトラブルを招きかねません。その危険性を鑑みれば、システムの起動/終了処理やソフトウェアアップデートなどの処理で間接的にrootの権限を必要とするときだけ、Touch IDやFace IDの認証によりrootとしての振る舞いを一時的に許可するほうが安全にシステムを運用できるのです。

iOSと兄弟関係にある「macOS」も、基本的には同じ考えかたで運用されています。rootは存在しますがパスワードが無効化されているため、直接ログインすることができません。rootとしての権限行使が必要なときには、ダイアログを表示して(現在作業しているユーザの)パスワードを入力し認証するしくみです。

11月末に発覚したmacOSの脆弱性は、無効化されているはずのrootがパスワードの入力なしに権限行使できてしまうという、前代未聞といえるほど危険なものでした。iOSに置き換えると、Touch ID/Face ID/パスコードというチェック機構をすべて無視してあらゆる操作ができる状態、とでもいえるでしょうか。macOSと異なり、iOSにはファイルシステム(内蔵ストレージ上の領域)を閲覧/操作できるアプリが用意されていませんから、起こりうる事態に多少の差はありますが、rootの扱いに慎重を期すべきであることに変わりはありません。

  • iOSにもrootの概念があり、「launchd」など重要なシステムプロセスはroot権限で実行されています