Mac OS X 上的 /etc/passwd 中不显示用户

Mac OS X 上的 /etc/passwd 中不显示用户

通过检查该/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 使用开放目录

相关内容