私はMacでこのLinuxパスワードジェネレータファイルを実行しようとしました。 OSXの下のディレクトリで動作するようにスクリプトを変更しました。
#!/bin/sh
# build-passwd.sh - creates a password file which contains all OS users (except root)
PASSWDIR=$(cd "$(dirname "$0")"; pwd)/etc
PASSWFN=$PASSWDIR/passwd
if [ ! -d "$PASSWDIR" ]; then
mkdir $PASSWDIR
echo "$PASSWDIR created"
fi
sudo awk -F":" '
BEGIN {OFS=":"}
{if ($1 != "root" && $2 != "!" && $2 != "*") print $1,$2}
' /etc/shadow > $PASSWFN **<===here's my problem**
if [ $? = 0 ]; then
echo "Password file saved to $PASSWFN"
fi
しかし、Macには「/etc/shadow」がないので動作しませんでした。
それでは、他の選択肢があるかどうかご存知ですか? (また、同じパスワードを使用してLinuxインストールからファイルをコピー/貼り付けようとしました。)
答え1
Lion以降、各ユーザーにはシャドウファイルがあります。これらはすべて/var/db/dslocal/nodes/Default/users
ディレクトリに保存され、ルートのみアクセスできます。たとえば、
$ ls -lah /var/db/dslocal/nodes/Default/users/
total 296
drwx------ 77 root wheel 2.6K Jul 27 20:30 .
drw------- 12 root wheel 408B Jul 27 20:30 ..
-rw------- 1 root wheel 4.0K Jul 27 20:30 Guest.plist
-rw------- 1 root wheel 260B Jul 27 20:17 _amavisd.plist
-rw------- 1 root wheel 254B Jul 27 20:17 _appleevents.plist
-rw------- 1 root wheel 261B Jul 27 20:17 _appowner.plist
-rw------- 1 root wheel 276B Jul 27 20:17 _appserver.plist
また、これはバイナリ属性リストファイルです。これを見る最も簡単な方法は、plist
コマンドを使用することです。たとえば、
$ plutil -p /var/db/dslocal/nodes/Default/users/root.plist
{
"smb_sid" => [
0 => "XXXX-XXXX"
]
"uid" => [
0 => "0"
]
"passwd" => [
0 => "XXYYXX"
]
}
答え2
Mac OS Xでは、標準の/etc/passwdおよび/etc/shadowを使用しません。代わりにデータベースを使用してください。 NetInfoというGUIがありましたが、現在はdscl
コマンド(ディレクトリサービスのコマンドライン)に置き換えられました。
$ dscl
> read /Local/Default/Users/David Password
Password: ********
残念ながら、このユーティリティを使用できるのはここまでです。パスワードの代わりにアスタリスクを印刷します。ハッシュを削除する方法があるかもしれませんが、まだ見つかりませんでした。
彼女の記事の一つはDSCLとパスワードのクラッキングMacで。