Os usuários não aparecem em / etc / passwd no Mac OS X

29

Examinando o /etc/passwdarquivo, devo obter uma lista de todos os usuários no sistema. No entanto, ao despejar o passwdarquivo no Mac OS XI, não vejo meu nome de usuário atual, mas muitas entradas como estas:

  _xgridagent: *: 86: 86: Agente Xgrid: / var / xgrid / agent: / usr / bin / false
  _appowner: *: 87: 87: Proprietário do aplicativo: / var / empty: / usr / bin / false
  _windowserver: *: 88: 88: WindowServer: / var / empty: / usr / bin / false
  _spotlight: *: 89: 89: Destaque: / var / empty: / usr / bin / false
  _tokend: *: 91: 91: Daemon de token: / var / empty: / usr / bin / false

Como posso fazer login no shell com meu nome de usuário e vê-lo quando o faço who?

poseid
fonte

Respostas:

25

O /etc/passwdarquivo é consultado apenas quando o sistema operacional está no modo de usuário único. O local "padrão" para informações da conta no OS X é o DirectoryService.

Tente man DirectoryServiceobter mais informações.

O seguinte bloco de comentários aparece na parte superior do meu arquivo de senha:

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

Nas versões recentes do OS X Directory Utility, foi movido para /System/Library/CoreServices/Directory Utility.

Steve Weet
fonte
Procurei algo assim (Directory Utility) - e não está na minha instalação do Snow Leopard ... alguma ideia do que eu poderia estar perdendo - como chegou lá na sua?
Jonathan Leffler
Hmmm ... A Apple diz que "o Mac OS X v10.5 inclui dois utilitários usados ​​para ligar computadores ao Microsoft Active Directory. O Directory Utility é um aplicativo e o dsconfigad é um utilitário de linha de comando acessado pelo Terminal. Ambos podem ser usados ​​para configurar o Conector do Active Directory no Directory Utility. "
Jonathan Leffler
Ele não está instalado no local anunciado nem aparece nos holofotes. Parece que meu arquivo de senha está mentindo para mim.
Steve Weet
Meu arquivo de senha diz a mesma mentira. Eu encontrei dsconfigad.
22810 Jonathan Leffler
2
Adicionado o novo local do utilitário de diretório.
Alan Shutko
10

Há um conjunto de serviços de diretório que mantém as informações. Há uma série de ferramentas de linha de comando ( dsclpor exemplo) para manipulá-las (hard) ou você pode usar as Preferências do Sistema para lidar com algumas delas.

Jonathan Leffler
fonte
4

O OS X não usa os arquivos UNIX / LINUX / etc / passwd. Em vez disso, ele o armazena no NetInfo. O comando usado para interagir com o NetInfo é o utilitário de comando do serviço de diretório, ou dscl.

Não estou familiarizado com os comandos, mas tenho certeza de que um simples man dsclnão faria mal a ninguém.

Sean
fonte
2
O NetInfo foi substituído pelos Serviços de Diretório a partir do Mac OS X 10.5 e mais recente.
Chealion 01/10/10
3

O Mac OS X usa o Open Directory .

Carl Norum
fonte
1

Sei que isso não está respondendo diretamente à pergunta, mas sinto que muitos que se deparam com essa pergunta só querem saber como fazer uma consulta simples para encontrar informações do usuário na linha de comando. Para outros ao longo deste caminho, apenas precisando ver uma configuração semelhante aos comandos unix padrão, achei este comando simples para ser útil.

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

Você também pode fazer:

dscl . -read /Users/<putusernamehere>

Para ver tudo, menos ser avisado, despejará na tela uma versão hexadecimal da foto do usuário. Se você precisar de outros componentes, é útil ver o que existe, se você puder evitar o item JPEGPhoto.

Isaac Egglestone
fonte