Пользователи не отображаются в / etc / passwd на Mac OS X

29

Изучив /etc/passwdфайл, я должен получить список всех пользователей в системе. Тем не менее, при выгрузке passwdфайла в Mac OS X я не вижу мое текущее имя пользователя, но многие записи, подобные этим:

  _xgridagent: *: 86: 86: Агент Xgrid: / var / xgrid / agent: / usr / bin / false
  _appowner: *: 87: 87: Владелец приложения: / var / empty: / usr / bin / false
  _windowserver: *: 88: 88: WindowServer: / вар / опорожнить: / USR / бен / ложь
  _spotlight: *: 89: 89: Прожектор: / вар / опорожнить: / USR / бен / ложь
  _tokend: *: 91: 91: Демон Token: / var / empty: / usr / bin / false

Почему я могу войти в оболочку под своим именем пользователя и увидеть это имя who?

poseid
источник

Ответы:

25

К /etc/passwdфайлу обращаются только тогда, когда ОС находится в однопользовательском режиме. «Стандартным» местом для информации об учетной записи в OS X является служба каталогов.

Попробуйте 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.

Стив Уит
источник
Я искал что-то вроде этого (Directory Utility) - и его нет в моей установке Snow Leopard ... Есть идеи, чего мне не хватать - как это получилось у вас?
Джонатан Леффлер
Хммм ... Apple говорит, что " Mac OS X 10.5 включает в себя две утилиты, используемые для привязки компьютеров к Microsoft Active Directory. Утилита каталогов - это приложение, а dsconfigad - это утилита командной строки, доступ к которой осуществляется через Терминал. Обе могут использоваться для настройки Соединитель Active Directory в утилите каталогов. "
Джонатан Леффлер
Это не установлено в рекламируемом местоположении, и при этом это не появляется в центре внимания. Похоже, мой файл паролей лжет мне.
Стив Уит
Мой файл паролей говорит то же самое. Я нашел dsconfigad.
Джонатан Леффлер
2
Добавлено новое расположение утилиты каталогов.
Алан Шутко
10

Существует набор служб каталогов, которые хранят информацию. Существует ряд инструментов командной строки ( dsclдля одного), чтобы управлять ими (жестко), или вы можете использовать Системные настройки для обработки некоторых из них.

Джонатан Леффлер
источник
4

OS X не использует файлы UNIX / LINUX / etc / passwd. Вместо этого он хранит его в NetInfo. Командой, используемой для взаимодействия с NetInfo, является служебная программа команды службы каталогов, или dscl.

Я не знаком с командами, но уверен, что простое man dsclникому не повредит.

Шон
источник
2
NetInfo был заменен Службами каталогов начиная с Mac OS X 10.5 и новее.
Chealion
1

Я понимаю, что это не является прямым ответом на вопрос, но я чувствую, что многие, кто сталкивается с этим вопросом, просто захотят узнать, как выполнить простой запрос, чтобы найти информацию о пользователе из командной строки. Для других на этом пути, просто нуждающихся в том, чтобы увидеть конфигурацию, подобную стандартным командам Unix, я нашел эту простую команду полезной.

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

Вы также можете сделать:

dscl . -read /Users/<putusernamehere>

Чтобы увидеть все, но быть предупрежденным, на экран будет выведена шестнадцатеричная версия фотографии пользователя. Если вам нужны другие компоненты, полезно посмотреть, что там, если вы можете избежать элемента JPEGPhoto.

Исаак Эгглстоун
источник