Como posso listar todas as contas de usuário no terminal?

74

Como posso listar todas as contas de usuário local no Terminal (conectadas ou não?) Os comandos usersou whonão fornecem essas informações. A versão do OS X é 10.6.8.

Eu vi esse comando sugerido - dscacheutil -q group

Mas ele lista apenas grupos de usuários do domínio e contas não locais.

codecowboy
fonte
11
Como usuário do AIX há muito tempo, com certeza sinto falta dos comandos de gerenciamento do sistema que eles inseriram no unix. Seria bom ter um usuário para esse fim.
bmike

Respostas:

68

E se

dscacheutil -q user | grep -A 3 -B 2 -e uid:\ 5'[0-9][0-9]'
Kevin
fonte
Eu gosto dessa opção Ele retorna um monte de contas começando com um sublinhado, no entanto. Alguma maneira de filtrar isso? por exemplo _softwareupdate, _mysql
codecowboy 1/11/11
9
Canalize o resultado através de grepdscl . list /Users | grep -v ^_.*
user151019
Muito legal! Vou ter que lembrar deste.
daviesgeek
5
Também é fácil confirmar com a memória.
26413 Kelly
41

Tente este. Usei-o para encontrar uma conta oculta perdida.

dscl . list /Users | grep -v '^_'
user41486
fonte
3
Foi exatamente o que o @Mark disse aqui .
Emil
qual é o sentido das contas ocultas?
SuperUberDuper
Para ver o uid também, usedscl . list /Users UniqueID | grep -v '^_'
Marián Černý
E se o usuário não estiver lá?
cameronroe 13/01
10

As contas de usuário desde 10.6 estão sendo gerenciadas pelo OpenDirectory. Os arquivos de back-end relacionados aos usuários do OpenDirectory estão aqui:

/var/db/dslocal/nodes/Default/users

A execução ls *neste diretório enumerará todos os usuários locais registrados no sistema. A execução plutil -p <file>.plistpermitirá que você leia algumas propriedades da conta de usuário especificada (ou seja, o caminho atual do diretório inicial).

Isso não é documentado, então eu aceito votos negativos. No entanto, esse método pode ser usado para inspecionar um sistema que não está em execução e para o qual o usuário possui apenas uma imagem de disco offline.

antonone
fonte
Eu gosto, mas é necessário o sudo / root para funcionar, o usuário administrador do std recebeu um erro de permissão. dscltrabalha para admin std.
JL Peyret
6

dscacheutil retorna mais do que apenas usuários locais, por exemplo, qualquer usuário que eu tenha consultado os Serviços de Diretório também mostre.

Eu achei isso mais útil:

dscl . list /Users | grep -v "^_"

Embora também retorne os gostos de daemon, nobodye root.

chymb
fonte
4

JMTCW para recriar um /etc/passwdequivalente amigável da linha de comandos (embora não exatamente na mesma ordem):

dscacheutil -q user |
    paste -d " "  - - - - - - - - |
    sed 's/^name: //;s/ [^[:space:]]*: /:/g'

Ou se você preferir uma saída separada por espaço (mas analisar o campo GECOS será um pouco mais complicado:

dscacheutil -q user |
    cut -d: -f2 |\
    paste -d " "  - - - - - - - -
não
fonte
2

Se nenhum diretório inicial do usuário foi movido, o ls /usersfará. Exceto que também listará diretórios como 'Compartilhado'.

iskra
fonte
2
Nunca faça isso. Há muito mais do que apenas Sharedisso pode estar lá.
Hamstergene #
-3

Você também pode digitar:

whoque informa quem está conectado e de onde vem. Útil se você estiver procurando por alguém que esteja fisicamente no mesmo prédio que você ou em algum outro local em particular.

wque informa quem está conectado e o que está fazendo. Especialmente útil: a parte "ociosa". Isso permite que você veja se eles estão realmente sentados digitando nos teclados no momento.

Jordânia
fonte