¿Cómo puedo enumerar todas las cuentas de usuario en el terminal?

74

¿Cómo puedo enumerar todas las cuentas de usuario locales en la Terminal (ya sea que haya iniciado sesión o no?) Los comandos userso whono proporcionan esta información. La versión de OS X es 10.6.8.

He visto este comando sugerido: dscacheutil -q group

Pero solo enumera grupos de usuarios de dominio y cuentas no locales.

codecowboy
fuente
1
Como usuario de AIX desde hace mucho tiempo, sin duda extrañé los comandos de administración del sistema que incorporaron en su Unix. Sería bueno tener lsuser para este propósito.
bmike

Respuestas:

68

Qué tal si

dscacheutil -q user | grep -A 3 -B 2 -e uid:\ 5'[0-9][0-9]'
Kevin
fuente
Me gusta esta opcion Sin embargo, devuelve un montón de cuentas que comienzan con un guión bajo. ¿Alguna forma de filtrar esto? por ejemplo, _softwareupdate, _mysql
codecowboy
9
Pipe el resultado a través grepdscl . list /Users | grep -v ^_.*
user151019
¡Muy genial! Tendré que recordar este.
daviesgeek
55
También es muy fácil comprometerse con la memoria.
Kelly
41

Prueba este. Lo usé para encontrar una cuenta oculta perdida.

dscl . list /Users | grep -v '^_'
usuario41486
fuente
3
Eso es precisamente lo que dijo Mark aquí .
Emil
¿Cuál es el punto de las cuentas ocultas?
SuperUberDuper
Para ver el UID también, usedscl . list /Users UniqueID | grep -v '^_'
Marián Černý
¿Qué pasa si el usuario no está allí?
Cameronroe
10

OpenDirectory gestiona las cuentas de usuario desde 10.6. Los archivos de fondo relacionados con los usuarios de OpenDirectory están aquí:

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

La ejecución ls *en este directorio enumerará todos los usuarios locales registrados en el sistema. La ejecución plutil -p <file>.plistle permitirá leer algunas propiedades para la cuenta de usuario especificada (es decir, la ruta actual del directorio de inicio).

Esto es bastante indocumentado, así que acepto los votos negativos. Sin embargo, este método puede usarse para inspeccionar un sistema que no se está ejecutando y para el cual el usuario solo tiene una imagen de disco fuera de línea.

antonone
fuente
Me gusta, pero requería sudo / root para funcionar, el usuario administrador estándar recibió un error de permiso. dsclfunciona para administrador estándar.
JL Peyret
6

dscacheutil devuelve más que solo usuarios locales, por ejemplo, también se muestran los usuarios para los que he consultado los servicios de directorio.

He encontrado esto más útil:

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

Aunque también devuelve los gustos de daemon, nobodyy root.

chimbo
fuente
4

JMTCW para recrear una línea de comandos /etc/passwdequivalente amigable (aunque no del todo en el mismo orden):

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

O si prefiere una salida separada por espacios (pero analizar el campo GECOS será un poco más complicado:

dscacheutil -q user |
    cut -d: -f2 |\
    paste -d " "  - - - - - - - -
don
fuente
2

Si no se movieron los directorios de inicio de los usuarios, ls /userslo hará. Excepto que también enumerará directorios como 'Compartido'.

iskra
fuente
2
Nunca hagas esto. Hay mucho más que solo Sharedeso puede estar allí.
hamstergene
-3

También puedes escribir:

whoque le dice quién inició sesión y de dónde provienen. Útil si está buscando a alguien que esté físicamente en el mismo edificio que usted o en algún otro lugar en particular.

wque te dice quién inició sesión y qué están haciendo. Especialmente útil: la parte 'inactiva'. Esto le permite ver si realmente están sentados allí escribiendo sus teclados en este momento.

Jordán
fuente