2010年1月9日土曜日

パスワードが無くなってログインできない Mac に無理矢理ログインする方法

会社で前任者が使用していたMacを使用する際など、管理者ユーザーのパスワードが紛失してしまってログインできなくなってしまう場合があります。っていうか、実際になって大変困りました><
このような場合、Mac OS Xでは「シングルユーザーモード」でOSを起動して、ユーザーのパスワードを自由に書き換えてログインできるようにすることができます。万が一の場合に便利なのでご紹介いたします。

参考にしたページはこちら。
http://d.hatena.ne.jp/viz3/20091029


■対象環境
  • Mac OS X 10.4以上であること (launchctlを使用するため)
  • UNIX / Linuxの対話環境についてある程度以上の知識があること
  • 失敗しても泣かない心があること
大変申し訳ありませんが、こちらに記載されている内容を実行して失敗してシステムが起動しなくなっても当方は責任を負いかねます><


1.シングルユーザーモードでMacを起動する
Macの電源を押して起動する際に、キーボードのCommand + Sキーを同時に押しっぱなしにしておくと、シングルユーザーモードで起動することができます。真っ黒な画面に文字がずらずら出てきたら成功です。


2./を読み書き可能にする(再マウントする)
画面上に
If you want to make modifications to files:
/sbin/fsck -fy
/sbin/mount -uw /
と表示されているので、ここに表示されているコマンドをそのまま入力します。コマンドの内容は以下の通り:
  • /sbin/fsck -fyは強制的にディスクチェックとディスクの問題修正を行う。-yがついているので、全ての問い合わせに対してYESを返したものと見なす。
  • /sbin/mount -uw /はすでに読み取り専用モードでマウントされている/を再度書き込み可能なモードでマウントし直す。

3.dsclをlocalonlyモードで起動する
お次はdsclというツールを使用します。ですがこのツールそのままでは起動できないようなので(dscl .とタイプするとなにやら警告が出ると思います)、以下のようにしてlaunchctlを使ってdsclツールの設定ファイルを読み込んでから、dsclをlocalonlyモードで起動します。
launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServicesLocal.plist
dscl localonly


4.対象のアカウントのパスワードを書き換える
dsclがlocalonly対話モードで起動したら、cdコマンドとlsコマンドを利用して対象のアカウントのある/Local/Target/Usersまで移動します。
 > ls
Local

Contact
Search
> cd Local
/Local > ls
Default
Target
/Local > cd Target
/Local/Target > cd Users
/Local/Target/Users > ls
ずらずらとここにアカウント名が羅列されるはず
ここまで移動できたら、以下のコマンドを入力すればパスワードが書き換わります。
passwd 対象のユーザー 新しいパスワード
たとえばさっきの状態からユーザーakisuteのパスワードをabesiに書き換えたいなら、
passwd akisute abesi
です。


5.再起動してログインする
あとは再起動して普通にMacを起動します。
reboot
先ほど入力したパスワードでログインできるはずです。


■注意
この方法を用いれば、物理的にアクセス可能な任意のMacの操作権限を奪うことが可能になってしまいます。くれぐれも悪用しないように。

逆に、この方法を用いてアクセスされたくないMacについては、以下のページで紹介されている方法を用いてシングルユーザーモードによる起動を禁止することができます。
Mac OS X 10.1 以降で、ファームウェアのパスワードプロテクションを設定する


■UNIX / Linuxユーザー向け
Mac OS Xのユーザーって、/etc/passwdじゃなくてDirectory Serviceで管理されてるんですねー。最初/etc/passwd以下を調べに行ってハマりました・・・

12 コメント:

andrew さんのコメント...

MacOS Xのインストールディスクのツール群の中にパスワードリセットのものがあった気がするのですが、あれとはなんか関係あるのでしょうか?

akisute さんのコメント...

> andrewさん
コメありがとうございます!
はてブのほうでもご指摘あったのですが、インストールディスクにパスワードリセットツールなるものがあるんですね!知らなかったです・・・
おそらくパスワードリセットツールと今回ご紹介した方法にはあんまり関係は無いですが、インストールディスクが利用可能ならそちらを使った方が安全でMacに優しい(?)と思いますので、そちらをお勧めします。

今回はインストールディスクもなかったのでこんな無理矢理な方法をとりました><
(もしあればクリーンインストールしてました)

Sachio(satou_to_shio@dj.pdx.ne.jp) さんのコメント...

こんにちは。初めまして。

前任者もパスワード分からなく、しかもインストールディスクもないので「パスワードリセットツール」なるものも利用できない状態です。
どうにかならないかなとウェブで探してここを見つけました。

それで質問なんですが、

■3.dsclをlocalonlyモードで起動する■のところなんですが、
"localhost:/ root#"の後に"launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServicesLocal.plist"を入力して、
"return"を押せばいんですよね?

手順としては、①/sbin/fsck -fy ②/sbin/mount -uw / ③launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServicesLocal.plist
 ④dscl localonly

ってことですか?

現在の画面の状況です↓
-------------------------------------------------------------
Sun Jan 11 08:12:17 JST 1970
Singleuser boot -- fsck not done
Root device is mounted read-only
If you want to make modifications to files,
run '/sbin/fsck -y' first snd then '/sbin/mount -uw /'
localhost:/ root# sbin/fsck -y
** /dev/rdisk0s3
** Root file system
**Checking HFS Plus volume.
fsck_hfs: Volume is journaled. Nochecking performed.
localhost:/ root# sbin/mount -uw
root_device on / (local, read-only, jouranaled)
devfs on /dev (local)
localhost:/ root# dscl localonly

-------------------------------------------------------------
ここで動かなくなっています。


使用しているパソコンはiBook G4のOSXで、ヴァージョンがログインできないため分かりません。

分かりにくい質問すいません。よろしくお願いいたします。

akisute さんのコメント...

> Sachioさん
返事遅くなりました!

> "localhost:/ root#"の後に"launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServicesLocal.plist"を入力して、
"return"を押せばいんですよね?

はい、そうです。ですので、

①/sbin/fsck -fy
②/sbin/mount -uw /
③launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServicesLocal.plist
④dscl localonly

であってます。

貼り付けていただいたログを見る限りだと、launchctl loadを実行していないためdsclが成功していないような気がします。試してみてください!

さんのコメント...

その後キーチェーンのアクセスパスワードも変えなければ行けないと思うのですがそれが変更前のパスワードが必要になります。 キーチェーンのパスワードを変更後のパスワードにかえないといけないとおもうのですが変更前のパスワードが必要ということもあり変えれない状態でシステム変更に支障がでたり 苦労の絶えない状態となります。その点について解答お願いできないでしょうか?

akisute さんのコメント...

> 将さん
私の場合はですが、ログインパスワードを変更してそのユーザーでログインした後、別の管理者ユーザーを作成しました。

その後、新規に作成し直した別の管理者ユーザーでログインして、そのままそのユーザーで今仕事しています。なので、前任者のキーチェーンには一切触っていません。幸いにして、無いと困るものは入っていなかったようです。

k_takayaps3 さんのコメント...

はじめして。iBookG4を親戚より譲り受けた者です。

貰ったのはいいのですがパスもわからずディスククもなく倉庫の中に入っていたのですが、このサイトを見て何とかなるのではないかと思い操作したところ行き詰ってしまったので質問させてもらいます。

sbin/mount -uwを入力した後

launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServicesLocal.plistといれると
-sh launchctl: command not found
と出るのですがこれはもうお手上げなのでしょうか?

長文失礼します。

akisute さんのコメント...

> k_takayaps3 さん
どうもこんばんわ!
そのエラーは、どうやら launchctl がシステム上に存在しないのが原因で発生しているようです。ちょっと調べてみました。

http://macwiki.sourceforge.jp/wiki/index.php/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/launchctl

ご覧の通り、 launchctl コマンドは Mac OS X 10.4以降にしか存在しないようです。ほかの代替手段がないか簡単に調べてみたのですが、申し訳ありませんが見つかりませんでした><

ということで、おそらくお使いのMacのバージョンが10.3以前のためうまくいかないのではないのかなと思います。

k_takayaps3 さんのコメント...

回答ありがとうございます。

そうですか・・・ではディスクを使ってもダメなんでしょうかね?

大丈夫なら検討したいのですが疎いものでして、どんな物がよろしいのか教えてもらえると助かります。

akisute さんのコメント...

いえ、そのiBook G4についてきていたディスク(おそらくMac OS X 10.3 Panther)さえあれば、普通に再インストールして起動できるようにできると思います。ですがすみません、私実は10.5からのMacユーザーでして、詳しいことはわかりません><

caramel さんのコメント...

初めまして、Macのトラブルに関して検索してて辿り着いたものです。

ログイン、パスワードがわからなくなってしまい、
かつ内蔵のドライブの故障で、データが取れなくなってしまいました。

読ませて頂いて、試そうとチャレンジしたのですが、どうもわからなくて、、
もしお時間があれば、詳細に教えて頂けないでしょうか?

シングルユーザーモードでMacを起動は問題ありませんが、
2、3、4、5が良くわかりません。

わからない箇所は箇条書きにすると

・これは1行で打つ必要がある?
 例えば、下記の2の箇所等
 If you want to make modifications to files:
/sbin/fsck -fy
/sbin/mount -uw /
・プログラムが流れているので、打つタイミングがわからない、、
・実行が成功しているかが不明
 成功の言葉等出るのでしょうか?

他の方のコメントも一読しましたが、
2、3の箇所は
①/sbin/fsck -fy → returnボタン
②/sbin/mount -uw /→ returnボタン
③launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServicesLocal.plist→ returnボタン
④dscl localonly→ returnボタン

ということで良いのでしょうか?

なんだかわかりづらい文章で、申し訳ありません。
お時間があれば、ご返答頂けますか?

下の知恵袋に、環境の状況を載せてあります。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1460195839

よろしくお願いします。

akisute さんのコメント...

> caramel さん

①/sbin/fsck -fy → returnボタン
②/sbin/mount -uw /→ returnボタン
③launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServicesLocal.plist→ returnボタン
④dscl localonly→ returnボタン

これで合ってます。処理が止まる(アイドル状態、何も流れていない、カーソルが点滅している)タイミングまで待って順番に実行してください。

こちらに記載されている方法は UNIX / Linux 対話環境についてのある程度以上の知識が必要になります。書いてある通りに実行してもおそらく大丈夫だとは思いますが、失敗しても責任は取りかねますのでなにとぞご了承ください・・・