iOSのサンドボックス内で動くターミナルエミュレーターアプリ「OpenTerm」がすごい!

iPhoneやiPadなどで利用できるiOS向けアプリは外部からのアクセスを遮断した環境下でアプリを動かす仕組み「サンドボックス構造」を採用して高いセキュリティーレベルを担保しています。

しかしながら、その高いセキュリティーレベルを担保する代わりにサードパーティーアプリ開発者が低レイヤーで動作する常駐型などのアプリを作成することができません。

そのため、オンラインバンキングや株取引などのお金を扱うアプリを使う人やセキュリティーにあまり詳しくない人でもiPhoneなどは他のプラットフォームを搭載した製品よりも安心して利用できるのです。

ただし、そういった仕様をどうしても窮屈に感じる人も中にはおり、どうしても耐えられない場合にはいわゆる“脱獄”を言われる「Jailbreak」を行いより自由なアプリを動作させる人もいるのが現状ですが、JailbreakはiOSの脆弱性を突いて利用するという面があるため、アングラよりな使い方になっています。

そこで今回は今年1月にリリースされたJailbreakせずにサンドボックス環境で動きながらも、Jailbreakしないと利用できないアプリと似た動きをしてくれるTerminal(ターミナル)をエミュレートするアプリ「OpenTerm」を紹介します。

【その名の通りのターミナルエミュレーター】

今回紹介するOpenTermはサンドボックス環境で動作するTerminalエミュレーターアプリとなっています。Terminalエミュレーターとはコマンドを発行してシステム部分を操作するアプリで、コマンドだけでさまざまなことができます。

そんなアプリが公式アプリ配信マーケット「App Store」で配布されているから驚きです。さらにジョークアプリではなく、本当にTerminalエミュレーターとして動作するのでさらにに驚いています。

IMG_0250
OpenTermをインストールして起動したところ


【実行できるコマンドは48種類】

実行できるコマンドは以下の48種類と意外と多く、また利用できるコマンドもLinuxやUNIXを触ったことがある人にとってはお馴染みのものがたくさん用意されています。

awkcatcdchflags
chksumclearcompresscp
curldateduecho
egrepenvfgrepgrep
gunzipgziphelplink
lnlsmkdirmv
open-urlprintenvpwdreadlink
rmrmdirscpsed
setenvsftpsharessh
statsumtartee
touchtrunameuncompress
unsetenvuptimewcwhoami


【さっそくOpenTermを試しに使ってみた】

起動すると、上記のようなプロンプトが表示されますので、試しにpwdコマンドを実行して、今どのディレクトリにいるのか確認してみたところホームディレクトリ「~」にいることが分かります。

IMG_0251

それではcdコマンドでルートディレクトリ「/」に移ろうとしたところ、権限がないため実行できませんでした。これはOpenTermがサンドボックス環境で動作しているからでしょう。

IMG_0253

続いて、whoamiコマンドを実行して現在のユーザーを確かめてみたところ、「mobile」というユーザーであることが分かります。

IMG_0255

であれば、他で良くあるような「cd /Users/mobile」だとか「cd /home/mobile」だとかでホームディレクトリに移動できるか確認したみましたが、そもそもファイルが見つかりません。考え方としてはchrootと似たような物なのかも知れません。

IMG_0259

サンドボックス上で動作しているため、できることの幅はやはり少ないなと思いながら、printenvコマンドを実行して環境変数の参照をしてみました。

すると、興味深い結果を得ることができました。例えば「HOMEDIR」の値を見てみると、「/var/mobile/Containers/Data/Application/~」であることが分かります。

この結果からアプリごとにそれぞれサンドボックス環境を作成して、その上でデータを扱っていることが分かりました。

IMG_0257

IMG_0258

はじめは半分冷やかしでインストールしてみたのですが、意外としっかりと作られていたので感動しました。現状ではできることが限られているため、実用性は正直なところそれほどありません。とはいえ、サンドボックス環境で「Terminalエミュレーターを動かす」という非常に挑戦的で好奇心をかき立てられます。OpenTermはその名の通り、オープンソースなTeminalエミュレーターで、Github上でそのコードが公開されています。

今後どのような形で発展するのか、どんな挑戦をするのか結構楽しみですね!

記事執筆:YUKITO KATO


[Image] QRコードアプリ名:OpenTerm
価格:無料
カテゴリ:ユーティリティ
開発者:Silver Fox
バージョン:1.3
互換性:iOS 11.0 以降。iPhone 5s、iPhone 6、iPhone 6 Plus、iPhone 6s、iPhone 6s Plus、iPhone SE、iPhone 7、iPhone 7 Plus、iPhone 8、iPhone 8 Plus、iPhone X、iPad Air、iPad Air Wi‑Fi + Cellular、iPad mini 2、iPad mini 2 Wi-Fi + Cellular、iPad Air 2、iPad Air 2 Wi-Fi + Cellular、iPad mini 3、iPad mini 3 Wi-Fi + Cellular、iPad mini 4、iPad mini 4 Wi-Fi + Cellular、12.9インチiPad Pro、12.9インチiPad Pro Wi-Fi + Cellular、9.7インチiPad Pro、9.7インチiPad Pro Wi-Fi + Cellular、iPad (第5世代)、iPad Wi-Fi + Cellular (第5世代)、12.9インチiPad Pro (第2世代)、12.9インチiPad Pro Wi‑Fi + Cellular (第2世代)、10.5インチiPad Pro、10.5インチiPad Pro Wi‑Fi + Cellular、および iPod touch に対応。
iTunes Store:http://itunes.apple.com/jp/app/id1323205755?mt=8

btn_itunes




■関連リンク
エスマックス(S-MAX)
エスマックス(S-MAX) smaxjp on Twitter
S-MAX - Facebookページ
GitHub - louisdh/terminal: OpenTerm, a sandboxed command line interface for iOS