通过检查该/etc/passwd
文件,我应该得到系统中所有用户的列表。但是,passwd
在 Mac OS XI 上转储该文件时,看不到我当前的用户名,但有很多这样的条目:
_xgridagent:*:86:86:Xgrid 代理:/var/xgrid/agent:/usr/bin/false _appowner:*:87:87:应用程序所有者:/var/empty:/usr/bin/false _windowserver:*:88:88:WindowServer:/var/empty:/usr/bin/false _spotlight:*:89:89:Spotlight:/var/empty:/usr/bin/false _tokend:*:91:91:令牌守护进程:/var/empty:/usr/bin/false
我为什么能用我的用户名登录到 shell 并在登录时看到该用户名who
?
答案1
仅当操作系统处于单用户模式时才会查阅该/etc/passwd
文件。OS X 上帐户信息的“标准”位置是 DirectoryService。
尝试man DirectoryService
获取更多信息。
我的密码文件顶部出现以下注释块:
##
# User Database
#
# Note that this file is consulted directly only when the system is running
# in single-user mode. At other times this information is provided by
# Open Directory.
#
# This file will not be consulted for authentication unless the BSD local node
# is enabled via /Applications/Utilities/Directory Utility.app
#
# See the DirectoryService(8) man page for additional information about
# Open Directory.
##
在最新版本的 OS X 中,目录实用程序已被移至/System/Library/CoreServices/Directory Utility
。
答案2
有一组目录服务用于保存信息。有一系列命令行工具(dscl
例如)可以(硬)操作它们,或者您可以使用系统偏好设置来处理其中的一些。
答案3
OS X 不使用 UNIX/LINUX /etc/passwd 文件。相反,它将其存储在 NetInfo 中。用于与 NetInfo 交互的命令是目录服务命令实用程序或 dscl。
我不熟悉这些命令,但我确信简单的命令man dscl
不会伤害任何人。
答案4
Mac OS X 使用开放目录。