Pengguna tidak muncul di / etc / passwd di Mac OS X

29

Dengan memeriksa /etc/passwdfile, saya harus mendapatkan daftar semua pengguna dalam sistem. Namun, ketika membuang passwdfile di Mac OS XI tidak melihat nama pengguna saya saat ini tetapi banyak entri seperti ini:

  _xgridagent: *: 86: 86: Agen Xgrid: / var / xgrid / agent: / usr / bin / false
  _appowner: *: 87: 87: Pemilik Aplikasi: / var / kosong: / 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

Kenapa saya bisa masuk ke shell dengan nama pengguna saya dan melihat nama pengguna itu ketika saya melakukannya who?

Poseid
sumber

Jawaban:

25

The /etc/passwdfile hanya berkonsultasi ketika OS dalam mode single-user. Lokasi "standar" untuk informasi akun pada OS X adalah DirectoryService.

Coba man DirectoryServiceuntuk informasi lebih lanjut.

Blok komentar berikut muncul di bagian atas file kata sandi saya:

##
# 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.
##

Dalam versi terbaru dari Utilitas Direktori OS X telah dipindahkan ke /System/Library/CoreServices/Directory Utility.

Steve Weet
sumber
Saya pergi mencari sesuatu seperti itu (Direktori Utilitas) - dan itu tidak ada di Snow Leopard saya menginstal ... tahu apa yang bisa saya lewatkan - bagaimana sampai di sana pada Anda?
Jonathan Leffler
Hmmm ... Apple mengatakan " Mac OS X v10.5 mencakup dua utilitas yang digunakan untuk mengikat komputer ke Microsoft Active Directory. Utilitas Direktori adalah sebuah aplikasi, dan dsconfigad adalah utilitas baris perintah yang diakses melalui Terminal. Keduanya dapat digunakan untuk mengkonfigurasi Konektor Direktori Aktif dalam Direktori Utilitas. "
Jonathan Leffler
Itu tidak dipasang di lokasi yang diiklankan, juga tidak muncul dalam sorotan. Sepertinya file kata sandi saya berbohong kepada saya.
Steve Weet
File kata sandi saya memberi tahu fib yang sama. Saya memang menemukan dsconfigad.
Jonathan Leffler
2
Menambahkan lokasi baru utilitas direktori.
Alan Shutko
10

Ada satu set Layanan Direktori yang menyimpan informasi. Ada serangkaian alat baris perintah ( dscluntuk satu) untuk memanipulasi mereka (keras) atau Anda dapat menggunakan System Preferences untuk menangani beberapa di antaranya.

Jonathan Leffler
sumber
4

OS X tidak menggunakan file UNIX / LINUX / etc / passwd. Sebagai gantinya, ia menyimpannya di NetInfo. Perintah yang digunakan untuk berinteraksi dengan NetInfo adalah utilitas perintah layanan direktori, atau dscl.

Saya tidak terbiasa dengan perintah, tapi saya yakin yang sederhana man dscltidak akan menyakiti siapa pun.

Sean
sumber
2
NetInfo digantikan oleh Layanan Direktori pada Mac OS X 10.5 dan yang lebih baru.
Chealion
3

Mac OS X menggunakan Open Directory .

Carl Norum
sumber
1

Saya menyadari ini tidak langsung menjawab pertanyaan tetapi saya merasa banyak yang mengalami pertanyaan ini hanya ingin tahu bagaimana melakukan kueri sederhana untuk menemukan informasi pengguna dari baris perintah. Bagi orang lain di sepanjang jalan ini hanya perlu melihat konfigurasi serupa dengan perintah unix standar saya menemukan perintah sederhana ini berguna.

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

Anda juga dapat melakukan:

dscl . -read /Users/<putusernamehere>

Untuk melihat semuanya tetapi diperingatkan itu akan membuang versi hex dari foto pengguna ke layar. Jika Anda memerlukan komponen lain meskipun itu berguna untuk melihat apa yang ada jika Anda dapat menghindari item JPEGFoto.

Isaac Egglestone
sumber