root
デフォルトでは、デバイスユーザーは特定のオブジェクト(ディレクトリなど)にアクセスできません/data
。しかし、これらのオブジェクトには制限はありませんが、これらのオブジェクトは最終的にこれらのオブジェクトにアクセスするためにいくつかのプロセスが実行される理由でroot
存在するようです。
しかし、私はUNIXとAndroidの経験がほとんどなく、次のような質問をしたいと思います。ユーザーがroot
まだ「ルート」していないAndroidデバイスでこのプログラムを実行できますか?どのような状況でプロセスがroot
レベルの操作を開始できますか? (例:OSアップデート?)root
すべての場合にパスワードが必要ですか?
質問に直接答えようとしていますが、「UNIX」と「Android」に関するすべての内容をたくさん読む必要があるようです。
答え1
特定のプログラムとサービスは、Androidの/ systemでrootとして実行されます。一部のルートテクノロジには、/ systemをこれらの「プログラム」に再マウントするコマンドを挿入することが含まれます。 / systemがrwモードでマウントされていない場合、追加されたプログラムはrootとして実行できません。 / dataに関する限り、各アプリケーションには一意のユーザーIDが付与され、アプリケーションデータが格納されている/ data / dataフォルダには、そのユーザーにのみアクセスを許可する権限があります(デフォルトではchmod 700)。もちろん、これを生成するにはルートレベルのプロセスが必要です。これは/ systemで実行されます。
答え2
より正確には、ファイルまたは実行可能ファイルがこれらの権限を持つ可能性があるため、通常のユーザー/プロセスが実行または読み取りできないため、最初の仮定は必ずしも正確ではありませんが、権限を使用して複数の"objects"
プロセスが実行されていますroot
。
Androidは低レベルのLinuxシステムにすぎないことを理解することが重要だと思います。つまり、携帯電話に表示されるすべては、UbuntuやFedoraなどのLinuxシステムと共通点はあまりありません。つまり、root
インストールするためのコマンドのみを実行することはできません。ハードウェアの本物のストックAndroid画像。また、Androidはマルチユーザーシステムではないため、パスワードを入力する必要はありませんroot
(私が知っている限り、Androidはrootパスワードを設定しません)。
すでに携帯電話に一般ユーザーがいるため、システム自体を悪用/攻撃してrootアクセス権を取得できます。たとえば、2.1などの古いAndroidシステムでは、これは正常に行われました。
確認してみるといいと思います。Androidデバイスでroot権限を取得する方法質問、いくつかのことを簡素化し説明するのに役立ちます。
答え3
デバイスをルーティングすることは、すべてのプログラムをrootとして実行できることを意味します。したがって、定義によると、コンピュータがルート化されていない場合、rootとしてプログラムを実行することはできません。 Androidデバイスには、rootとして実行されるいくつかのプログラムがあります。しかし、彼らの行動を制御することはできません。
AndroidはUnixオペレーティングシステムではありません。カーネルはLinuxと同じですが、残りは異なります。カーネルに関する限り、rootとしてプログラムを実行する方法は3つだけです。
- カーネルから直接呼び出すことができます。カーネルが起動したら、
init
このプログラムをrootとして呼び出します。デバイスを接続すると、一部の設定でカーネルがrootとしてプログラムを実行することもできます。 - ルートとして実行されるプログラムによって呼び出されることがあります。
- それ設定値ルートに属する実行可能ファイルです。
UNIXシステムではsu
、同じプログラムはsudo
setuidルートです。これにより、すべてのユーザーが呼び出すことができます(電話、入力したパスワードなどに応じて)、シェルまたは他のプログラムをrootとして実行するか、エラー状態を返すかを決定できます。認証を実行するのはカーネルではなく、これらのプログラムです。カーネルは、ユーザーアカウントとパスワードではなく数字のユーザーIDのみを処理します。
標準のAndroidシステムにはユーザーアカウントはありません(ユーザーIDはユーザーではなくアプリケーションを分離するために使用されます)。 Unixの意味ではパスワードベースの認証は使用されません(PINまたは他の認証方法を使用してシステムの一意のユーザーを認証できます)。 Androidデバイスをルーティングすることは、シェルがrootとして実行されるように準備することを意味し、通常はrootとしてadb shell
実行されるシェルを提供します。デバイスにはユーザーが 1 人しかいないため、まだ root パスワードはありません。