/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
を実行するとそのユーザー名が表示されるのですか?
/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
に移動しました。
情報を保持するディレクトリサービスのセットがあります。それらを操作する(ハード)ための一連のコマンドラインツール(1つはdscl
)があります。または、システム環境設定を使用してそれらの一部を処理できます。
OS XはUNIX/LINUX/etc/passwdファイルを使用しません。代わりに、それをNetInfoに保存します。 NetInfoとの対話に使用されるコマンドは、ディレクトリサービスコマンドユーティリティ、つまりdsclです。
コマンドに慣れていませんが、単純なman dscl
誰も傷つけません。
Mac OS Xは Open Directory を使用します。
私はこれが直接質問に答えているわけではないことを理解していますが、この質問に遭遇した多くの人は、コマンドラインからユーザー情報を見つけるための簡単なクエリの方法を知りたいだけだと思います。このパスに沿った他の人にとっては、標準のUNIXコマンドと同様の設定を表示する必要があるだけなので、この単純なコマンドが便利であることがわかりました。
dscl . -read /Users/<putusernamehere> UniqueID PrimaryGroupID NFSHomeDirectory UserShell
あなたも行うことができます:
dscl . -read /Users/<putusernamehere>
警告以外のすべてを表示するには、ユーザーの写真の16進数バージョンを画面にダンプします。他のコンポーネントが必要な場合でも、JPEGPhotoアイテムを回避できる場合は、そこに何があるかを確認すると便利です。