攻撃は最大の防御なり

50代おやじの適当なブログです。

[Android]そもそもrootって何なの?

2011-08-08 12:41:20 | Android
今日からAndroidの基礎についてつらつらと書いていきます。
AndroidはLinuxの一種ですので、Androidを理解する事はLinuxを理解するのと同義となります。
内容的にはうちの新人に「UNIXとは何ぞや?」を教えるのと似た様な感じになるので、必ずしも面白い話になるとは限りません。

さて、スマフォを触っていると良く「rootを取った」とか「rooted」という言葉が出てきます。
そもそもrootって何でしょうか?
端的に言ってしまえば「管理者権限を持つユーザの事」です。
Androidは常に抑制された状態で動作しています。
windowsで言う所のuser権限でログインしたのと同じで、勝手に人のファイルを見たり変更したり出来ない状態です。
では、実際にどんな状態か見てみましょう。

Androidマーケットから「アストロファイルマネージャー」をインストしました。
このアプリはwindowsのエクスプローラと同じようにAndroidファイルシステムを見ることが出来るアプリです。
アストロで/dataの中身を見ようとしたところ「ディレクトリは空です」と表示されました。



本当は/dataの中にはアプリの設定データ等が入っているのですが、
/dataディレクトリには勝手に中身を見ることが出来ない設定が成されています。
この中身を見たり書き換えたり出来る・出来ないの設定の事を「パーミッション」と呼びます。
Android上の全てのファイル、ディレクトリには、このパーミッションが設定されていて
/dataの中身を見れる人は/dataディレクトリの持ち主もしくはrootユーザと言う事になります。
慣例的に特定のファイルディレクトリを扱える権限が無い事を「パーミッションが無い」
権限がある事を「パーミッションがある」と言います。

次に「ConnectBot」というアプリを使って端末自身にコマンドラインでログインしました。



/dataに移動して(cd /data)
中身を見ようとしました(ls)
が「ls:can't open '.':Permission denied」と応答が帰って来ています。

ここでの'.'はカレントディレクトリ、すなわち/dataの事を指します。
要するに「カレントディレクトリが開けません。パーミッションが無いよ」と言っているのです。

その次で「su」と言うコマンドを発行しています。
これはSubstitute Userの略で語意のままユーザ変更をするコマンドですが、
引数無しの「su」は暗黙的にrootにユーザ変更をする事を意味します。
ここでコマンドプロンプトが変っている事にも注意してください。
これも決まり事で一般ユーザは「$」rootは「#」で見た目で分かるようになっています。

同じようにrootで/dataの中身を見たら見事に表示させる事が出来ました。


ここで最初の「rooted」の話に戻りますが「rooted」にしたからといって
Android全てのプロセスがroot権限で動作するようになるわけではなく
抑制された状態で動作している事には何の変りもありません。
正しく言うならば「root権限で作業をする事が可能になる」と言う事です。
Root Explorerというroot権限で動作するエクスプローラを使えば/dataの中身を見る事が出来ますが
このアプリはアプリ自身がroot権限で動作するような細工がしてあります。
当然、買ったばかりで素の状態の端末ではRoot Explorerは動作しません。

要するに「rooted」にすると、普通では触れないファイル等の編集や入れ替えが可能になります。
正しく作業すればより便利な機能が使える様になったりする反面、システムを壊す原因にもなります。
そこで壊した時にどうするのか?と言う保険が必要になってきます。
それは又の機会に書きますが、とてつもなく変な事をしない限りまず文鎮にはなりません。