web-dev-qa-db-ja.com

Mac OS Xのユーザーが/ etc / passwdに表示されない

/etc/passwdファイル、システム内のすべてのユーザーのリストを取得する必要があります。ただし、Mac OS Xでpasswdファイルをダンプすると、現在のユーザー名が表示されず、次のような多くのエントリが表示されます。

 _xgridagent:*:86:86:Xgrid Agent:/ var/xgrid/agent:/ usr/bin/false 
 _appowner:*:87:87:Application Owner:/ 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:Token Daemon:/ var/empty:/ usr/bin/false 

なぜ自分のユーザー名でシェルにログインし、whoを実行するとそのユーザー名が表示されるのですか?

30
poseid

/etc/passwdファイルは、OSがシングルユーザーモードの場合にのみ参照されます。 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の最近のバージョンでは、Directory Utilityは/System/Library/CoreServices/Directory Utilityに移動しました。

26
Steve Weet

情報を保持するディレクトリサービスのセットがあります。それらを操作する(ハード)ための一連のコマンドラインツール(1つはdscl)があります。または、システム環境設定を使用してそれらの一部を処理できます。

10

OS XはUNIX/LINUX/etc/passwdファイルを使用しません。代わりに、それをNetInfoに保存します。 NetInfoとの対話に使用されるコマンドは、ディレクトリサービスコマンドユーティリティ、つまりdsclです。

コマンドに慣れていませんが、単純なman dscl誰も傷つけません。

4
Sean

Mac OS Xは Open Directory を使用します。

3
Carl Norum

私はこれが直接質問に答えているわけではないことを理解していますが、この質問に遭遇した多くの人は、コマンドラインからユーザー情報を見つけるための簡単なクエリの方法を知りたいだけだと思います。このパスに沿った他の人にとっては、標準のUNIXコマンドと同様の設定を表示する必要があるだけなので、この単純なコマンドが便利であることがわかりました。

dscl . -read /Users/<putusernamehere> UniqueID PrimaryGroupID NFSHomeDirectory UserShell

あなたも行うことができます:

dscl . -read /Users/<putusernamehere>

警告以外のすべてを表示するには、ユーザーの写真の16進数バージョンを画面にダンプします。他のコンポーネントが必要な場合でも、JPEGPhotoアイテムを回避できる場合は、そこに何があるかを確認すると便利です。

1