Mac 上的 /etc/shadow

Mul*_*tut 7 linux osx bash

我一直在尝试在我的 Mac 上运行这个 Linux passwd-generator 文件。我对脚本进行了足够的修改,使其能够在 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
Run Code Online (Sandbox Code Playgroud)

但没有成功,因为 Mac 上没有“/etc/shadow”。

那么你知道是否有其他替代方法吗?(我还尝试使用相同的密码从我的 Linux 安装中复制/粘贴文件)

小智 12

从 Lion 开始,每个用户都有一个影子文件。所有这些都存储在/var/db/dslocal/nodes/Default/users目录中,并且只能由 root 访问。例如:

$ 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
Run Code Online (Sandbox Code Playgroud)

此外,那些是二进制属性列表文件。查看它们的最简单方法是使用plist命令。例如:

$ plutil -p /var/db/dslocal/nodes/Default/users/root.plist 
{
  "smb_sid" => [
    0 => "XXXX-XXXX"
  ]
  "uid" => [
    0 => "0"
  ]
  "passwd" => [
    0 => "XXYYXX"
  ]
}
Run Code Online (Sandbox Code Playgroud)


小智 6

Mac OS X 不使用标准的 /etc/passwd 和 /etc/shadow。相反,它使用数据库。曾经有一个名为 NetInfo 的 GUI,但它已被dscl命令(目录服务命令行)取代。

$ dscl
> read /Local/Default/Users/David Password
Password: ********
Run Code Online (Sandbox Code Playgroud)

不幸的是,这就是我可以使用该实用程序所能达到的程度。它打印出星号而不是密码。也许有办法让它放弃哈希,但我还没有找到。

她的文章详细介绍了在 Mac 上使用DSCL 和破解密码