Użytkownicy nie pojawiają się w / etc / passwd w Mac OS X

29

Analizując /etc/passwdplik, powinienem uzyskać listę wszystkich użytkowników w systemie. Jednak podczas zrzutu passwdpliku w systemie Mac OS XI nie widzę mojej bieżącej nazwy użytkownika, ale wiele takich wpisów:

  _xgridagent: *: 86: 86: Agent Xgrid: / var / xgrid / agent: / usr / bin / false
  _appowner: *: 87: 87: Właściciel aplikacji: / 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

Dlaczego mogę zalogować się do powłoki przy użyciu mojej nazwy użytkownika i zobaczyć tę nazwę użytkownika, gdy to zrobię who?

poseid
źródło

Odpowiedzi:

25

/etc/passwdPlik jest konsultowany tylko wtedy, gdy system operacyjny jest w trybie pojedynczego użytkownika. „Standardową” lokalizacją informacji o koncie w OS X jest DirectoryService.

Spróbuj man DirectoryServiceuzyskać więcej informacji.

W górnej części mojego pliku haseł pojawia się następujący blok komentarzy:

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

W najnowszych wersjach OS X Directory Utility został przeniesiony do /System/Library/CoreServices/Directory Utility.

Steve Weet
źródło
Szukałem czegoś takiego (Directory Utility) - i nie ma go w mojej instalacji Snow Leopard ... jakiś pomysł, czego mógłbym przegapić - jak to się stało?
Jonathan Leffler,
Hmmm ... Apple mówi: „ Mac OS X 10.5 zawiera dwa narzędzia służące do wiązania komputerów z Microsoft Active Directory. Directory Utility to aplikacja, a dsconfigad to narzędzie wiersza polecenia, do którego można uzyskać dostęp przez Terminal. Oba mogą być używane do konfigurowania Łącznik usługi Active Directory w Directory Utility.
Jonathan Leffler,
Nie jest zainstalowany w reklamowanej lokalizacji ani nie pojawia się w centrum uwagi. Wygląda na to, że mój plik hasła mnie okłamuje.
Steve Weet,
Mój plik haseł mówi to samo fib. I znaleźliśmy dsconfigad.
Jonathan Leffler,
2
Dodano nową lokalizację narzędzia katalogu.
Alan Shutko
10

Istnieje zestaw usług katalogowych, który przechowuje informacje. Istnieje szereg narzędzi wiersza polecenia ( dscldla jednego) do manipulowania nimi (na twardo) lub można użyć Preferencji systemowych do obsługi niektórych z nich.

Jonathan Leffler
źródło
4

OS X nie używa plików UNIX / LINUX / etc / passwd. Zamiast tego przechowuje go w NetInfo. Poleceniem używanym do interakcji z NetInfo jest narzędzie polecenia usługi katalogowej lub dscl.

Nie znam poleceń, ale jestem pewien, że prosty man dsclnie skrzywdziłby nikogo.

Sean
źródło
2
NetInfo zostało zastąpione przez Directory Services od Mac OS X 10.5 i nowszych.
Chealion
1

Zdaję sobie sprawę, że nie jest to bezpośrednia odpowiedź na pytanie, ale czuję, że wielu, którzy napotkają to pytanie, będą chcieli wiedzieć, jak wykonać proste zapytanie, aby znaleźć informacje o użytkowniku z wiersza poleceń. Dla innych osób znajdujących się na tej ścieżce, które chciałyby zobaczyć konfigurację podobną do standardowych poleceń uniksowych, uznałem to proste polecenie za przydatne.

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

Możesz także:

dscl . -read /Users/<putusernamehere>

Aby zobaczyć wszystko, ale być ostrzeżonym, zrzuci szesnastkową wersję zdjęcia użytkownika na ekran. Jeśli potrzebujesz innych komponentów, warto jednak zobaczyć, co tam jest, jeśli możesz uniknąć elementu JPEGPhoto.

Isaac Egglestone
źródło