1.1.3 jailbreak後にパスワードを変更するとSpringBoardが再起動を繰り返す問題
iPhone/iPod touchを1.1.3 jailbreakした後、passwdコマンドでパスワードを変更すると、SpringBoardが数秒毎に再起動を繰り返してしまう問題が発生します。これは、BSD Subsystemに含まれるpasswdコマンドがファームウェア1.1.3の/etc/passwdおよび/etc/master.passwdファイルを壊してしまうことにより引き起こされる問題のようです。
したがって、BSD Subsystemのこの問題が解決されるまでpasswdコマンドを実行してはいけません。かといって、ユーザrootとmobileのパスワードをデフォルトのalpineにしておくわけにはいきませんので、以下の手順に従って/etc/master.passwdを直接編集しておくことをお勧めします。
/etc/master.passwdは以下のように1カラム目がユーザ名、2カラム目がDESエンコードしたパスワードになっています。
## nobody:*:-2:-2::0:0:Unprivileged User:/var/empty:/usr/bin/false root:/smx7MYTQIi2M:0:0::0:0:System Administrator:/var/root:/bin/sh mobile:/smx7MYTQIi2M:501:501::0:0:Mobile User:/var/mobile:/bin/sh daemon:*:1:1::0:0:System Services:/var/root:/usr/bin/false unknown:*:99:99::0:0:Unknown User:/var/empty:/usr/bin/false _securityd:*:64:64::0:0:securityd:/var/empty:/usr/bin/false
この2カラム目をviなどを使用して編集すれば問題は解決します。Mac OS Xにはcryptコマンドがありませんので、代わりにperlのcrypt()関数を使用してDES暗号化されたパスワード文字列を取得します。
$ perl -e 'print crypt("YOUR_PASSWORD", "SA"), "\n";' SAb.ud/B16dTo
ここで、YOUR_PASSWORDの部分を実際に使用するパスワードに変更してください。SAの部分はsaltと呼ばれる暗号化の種ですので、任意の2文字を与えてください(例えば、パスワードalpineの暗号化には"/s"が使われています)。crypt()関数の実行結果としてsalt2文字から始まる13バイトの文字列が得られますので、これを/etc/master.passwd内のパスワード(/smx7MYTQIi2Mの部分)と置き換えて保存します。
【追記 2008.3.01】
apptapp Installerから導入されるBSD Subsystemでは未だに解決されていませんが、Jay Freeman氏による新しいパッケージマネージャCydiaからインストールされるBSD Subsystem互換セットではこの問題が解決されています。
| 固定リンク
« Remote Diskは単なるファイル共有ではない | トップページ | 1.1.3 jailbreak: iPhone Dev Team Official vs. iJailBreak 0.4.1 »
「ipod」カテゴリの記事
- iPhone/iPod touchをお風呂で使う(2008.09.28)
- jailbreak時にrsyncでホームディレクトリを復元する(2008.08.24)
- Sun Microsystems、iPhone SDK公開を受けてiPhone向けJava MEの開発を表明(2008.03.09)
- iPhone SDK β公開とアプリケーション配布の今後(2008.03.09)
- Jay Freeman氏、Debian APTベースの新しいパッケージマネージャCydiaをリリース(2008.03.01)
「iphone」カテゴリの記事
- Flash on iPad (frash)(2010.07.10)
- iPhone 4でpdfを表示させるとこんな感じ(2010.06.24)
- iPhone/iPod touchをお風呂で使う(2008.09.28)
- jailbreak時にrsyncでホームディレクトリを復元する(2008.08.24)
- iPhone 3GにブループランSSで機種変更しました。(2008.07.27)
コメント
いつも参考にさせていただております.ありがとうございます.1.1.3にiphoneをアップデートしましたが,パスワードを変更できなくこまっております.以前は1.1.1でtermvt-100にて容易にできたのですが,今回はソフトのインストールもできません.しかし,こちらを拝見させていただきましたところ,対策方法が記載されているしていただいてあるにもかかわらず理解することができません.大変申し訳ありません本当の素人みたいなものです.vi自体の使い方も知りません.なんとかこんな私でもパスワードの設定が出来ないものでしょうか.何卒よろしくお願い申し上げます.
投稿: finite | 2008年2月18日 (月) 18時04分
いつも、玄人向けの文章ですいません。
> 今回はソフトのインストールもできません.
この部分が気になったのですが、1.1.3 jailbreak完了後に、Installer.appがSpringBoardに現れていますでしょうか?
また、外部のマシンからユーザroot、パスワードalpineでsshログインできますでしょうか?
1.1.3 jailbreakが成功していれば、上記2点ができているはずですが、これらが可能になっていないと今回の対策はできません。
今回の対策方法を簡単に言うと、2つのステップからなります。
1) 新しいパスワードのDES暗号化文字列を取得する
2) /etc/master.passwdを編集し、1)の文字列で書き換える
1)は、Linuxマシンなどであればcryptコマンドが使えますが、そうでなくてもperlさえ動く環境があれば取得できます(上記エントリで解説)。2)はiPhone上で直接編集する代わりに、scpでPCにコピーし、使い慣れたテキストエディタで編集後、scpでiPhoneにscpし直すという方法も取れます。
もし、まだ分からないことがあればまたコメントください。
投稿: javaflavor | 2008年2月18日 (月) 21時43分
早々にご丁寧なアップありがとうございます.
私の環境はMacOS環境しかありません.これでは無理でしょうか?
以前はfetchを使用してPCマック側からパスワードの変更を操作していたのですが,繋がらないことが多く,そのためterm vt-100で操作するようになりました.
現在はterm vt-100は動くようになりました.
しかし,ご教示していただております内容は理解できますが,とくにviなどは一度もうごかしたことはないのです.
何とかなりますでしょうか?
また,このままwifiで使用することも心配なのですが?
申し訳ありません.何卒よろしくお願い申し上げます.
投稿: finite | 2008年2月19日 (火) 01時25分
いろいろとありがとうございます.マックターミナルにてDES暗号化文字列を取得することまではできました.fetchにてファイルをダウンロードし変更するところまでは可能でしたが,そのファイルを戻すとき,私のテキストエディターはmicrosoftwordなのですが大丈夫でしょうか?簡単なことも分からずに申し訳ありません.何卒よろしくお願いいたします.
投稿: finite | 2008年2月19日 (火) 12時50分
がんばってやりました.しかし,一つ間違えて/を残して入れてしまいました.アクセス不能です.どうしたらよいでしょうか?
投稿: finite | 2008年2月19日 (火) 14時47分
復元しました.しかしterm-vt100ではアクセス可能ですが,fetchではアクセス不能です.したがってファイルの変更が出来なくなりました.何か手段はありますでしょうか.もうしわけありません.
投稿: finite | 2008年2月19日 (火) 18時24分
finiteさん、
term-vt100ではアクセス可能ということは、term-vt100ではきちんとrootでログインできているということですね。
もし、そうなら/etc/master.passwdの変更は成功していていると思われます。それにも関わらず、fetchからアクセスできないということは、何らかの原因でiPhone内のsshサーバ(sshd)が停止してしまっていると言うことだと思います。
sshdを起動するには、term-vt100から(ちょっと長いですが)、以下のコマンドを実行してみてください。
# cd /Library/LaunchDaemons
# launchctl load com.openssh.sshd.plist
投稿: javaflavor | 2008年2月19日 (火) 20時13分
いつもありがとうございます.
windowsからのアクセスですとつながりました.しかし,Mac側からは無理です.もし,rootのパスワードを間違えた場合には復元するしか手段はないのでしょうか?また,復元をwindowsで行い同期をMacで行うことは可能でしょうか?
ご教示いただけないでしょうか.
投稿: finite | 2008年2月20日 (水) 08時59分
すいませんが、Windowsからは繋がって、Macからはダメという状況がどういう状態なのか想像ができないため、適切なアドバイスができません。
> rootのパスワードを間違えた場合には復元するしか手段はないのでしょうか?
はい。残念ながらそうです。
> 復元をwindowsで行い同期をMacで行うことは可能でしょうか?
可能です。
投稿: javaflavor | 2008年2月20日 (水) 23時40分