Comment puis-je lister tous les comptes d'utilisateur du terminal?

74

Comment puis-je répertorier tous les comptes d'utilisateurs locaux dans Terminal (qu'ils soient connectés ou non?) Les commandes usersou whone fournissent pas ces informations. La version OS X est 10.6.8.

J'ai vu cette commande suggérée - dscacheutil -q group

Mais il ne répertorie que les groupes d'utilisateurs du domaine et les comptes non locaux.

codecowboy
la source
1
En tant qu'utilisateur AIX de longue date, les commandes de gestion du système qu'ils ont intégrées à leur unix me manquent. L'utilisateur serait bien d'avoir à cet effet.
bmike

Réponses:

68

Que diriez-vous

dscacheutil -q user | grep -A 3 -B 2 -e uid:\ 5'[0-9][0-9]'
Kevin
la source
J'aime cette option. Il retourne cependant un groupe de comptes commençant par un trait de soulignement. Un moyen de filtrer cela? Par exemple, _softwareupdate, _mysql
codecowboy
9
Diffusez le résultat via grepdscl . list /Users | grep -v ^_.*
user151019
Très cool! Je vais devoir me souvenir de celui-ci.
daviesgeek
5
C’est aussi facile à mémoriser.
Kelly
41

Essaye celui-là. Je l'ai utilisé pour trouver un compte caché perdu.

dscl . list /Users | grep -v '^_'
utilisateur41486
la source
3
C'est précisément ce que @Mark a dit ici .
Emil
quel est l'intérêt des comptes cachés?
SuperUberDuper
Pour vous en rendre compte également, utilisezdscl . list /Users UniqueID | grep -v '^_'
Marián Černý
Et si l'utilisateur n'est pas là?
cameronroe
10

Les comptes utilisateur depuis 10.6 sont gérés par OpenDirectory. Les fichiers backend associés aux utilisateurs d’OpenDirectory sont ici:

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

L'exécution ls *dans ce répertoire énumérera tous les utilisateurs locaux enregistrés sur le système. L’exécution plutil -p <file>.plistvous permettra de lire certaines propriétés du compte utilisateur spécifié (par exemple, le chemin du répertoire de base actuel).

Ceci est plutôt non documenté alors j'accepte les votes négatifs. Toutefois, cette méthode peut être utilisée pour inspecter un système qui ne fonctionne pas et pour lequel l'utilisateur ne dispose que d'une image de disque hors connexion.

Antonone
la source
Je l’aime bien, mais il fallait que sudo / root fonctionne, l’utilisateur administrateur std a obtenu une erreur d’autorisation. dsclfonctionne pour std admin.
JL Peyret
6

dscacheutil renvoie plus que des utilisateurs locaux, par exemple, tous les utilisateurs pour lesquels j'ai interrogé les services d'annuaire s'affichent également.

J'ai trouvé cela plus utile:

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

Bien qu'il retourne aussi les goûts de daemon, nobodyet root.

chymb
la source
4

JMTCW pour recréer un /etc/passwdéquivalent convivial en ligne de commande (mais pas tout à fait dans le même ordre):

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

Ou si vous préférez une sortie séparée par des espaces (mais l'analyse du champ GECOS sera un peu plus compliquée:

dscacheutil -q user |
    cut -d: -f2 |\
    paste -d " "  - - - - - - - -
Don
la source
2

Si aucun répertoire personnel de l'utilisateur n'a été déplacé, alors ce ls /userssera fait. Sauf que cela va aussi lister des répertoires comme 'Shared'.

Iskra
la source
2
Ne fais jamais ça. Il y a beaucoup plus que ce Sharedqui peut être là.
Hamstergene
-3

Vous pouvez aussi taper:

whoce qui vous indique qui est connecté et d'où ils viennent. Utile si vous recherchez quelqu'un qui se trouve réellement dans le même bâtiment que vous ou dans un autre lieu particulier.

wqui vous indique qui est connecté et ce qu'il fait. Particulièrement utile: la partie "inactive". Cela vous permet de voir s’ils sont assis en train de taper sur leur clavier en ce moment.

Jordan
la source