Как я могу перечислить все учетные записи пользователей в терминале?

73

Как я могу перечислить все локальные учетные записи пользователей в Терминале (независимо от того, вошли они в систему или нет?) Команды usersили whoне предоставляют эту информацию. Версия OS X - 10.6.8.

Я видел эту предложенную команду - dscacheutil -q group

Но в нем перечислены только группы пользователей домена и нелокальные учетные записи.

codecowboy
источник
1
Как давний пользователь AIX, я наверняка скучаю по командам управления системой, которые они запекли в свой unix. lsuser было бы неплохо иметь для этой цели.
bmike

Ответы:

67

Как насчет

dscacheutil -q user | grep -A 3 -B 2 -e uid:\ 5'[0-9][0-9]'
Kevin
источник
Мне нравится этот вариант. Тем не менее, он возвращает несколько учетных записей, начинающихся с подчеркивания. Есть ли способ отфильтровать это? например, _softwareupdate, _mysql
codecowboy
9
Передайте результат через grepdscl . list /Users | grep -v ^_.*
Mark
Очень круто! Я должен запомнить это.
Дэвисгик
5
Это так легко перенести в память.
Келли
39

Попробуй это. Я использовал его, чтобы найти потерянный скрытый аккаунт.

dscl . list /Users | grep -v '^_'
user41486
источник
3
Это именно то, что @Mark сказал здесь .
Эмиль
какой смысл скрытых аккаунтов?
SuperUberDuper
Чтобы увидеть также uid, используйтеdscl . list /Users UniqueID | grep -v '^_'
Marián Černý
Что делать, если пользователя там нет?
Камеронро
9

Учетные записи пользователей, начиная с 10.6, управляются OpenDirectory. Внутренние файлы, связанные с пользователями OpenDirectory, находятся здесь:

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

Выполнение ls *в этом каталоге перечислит всех локальных пользователей, зарегистрированных в системе. Выполнение plutil -p <file>.plistпозволит вам прочитать некоторые свойства для указанной учетной записи пользователя (т.е. текущий путь к домашней директории).

Это довольно недокументировано, поэтому я принимаю отрицательные отзывы. Однако этот метод можно использовать для проверки системы, которая не работает и для которой у пользователя есть только автономный образ диска.

antonone
источник
Мне это нравится, но для работы требуется sudo / root, пользователь std admin получил ошибку разрешения. dsclработает на стандартный админ.
JL Peyret
5

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

Я нашел это более полезным:

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

Хотя он также возвращает любит daemon, nobodyи root.

chymb
источник
3

JMTCW воссоздает дружественный /etc/passwdэквивалент командной строки (хотя и не совсем в том же порядке):

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

Или, если вы предпочитаете вывод через пробел (но синтаксический анализ поля GECOS будет немного сложнее:

dscacheutil -q user |
    cut -d: -f2 |\
    paste -d " "  - - - - - - - -
дон
источник
1

Если никакие домашние каталоги пользователей не были перемещены, тогда ls /usersбудет делать. Кроме того, в нем также будут перечислены каталоги, такие как «Shared».

Iskra
источник
2
Никогда не делай этого. Там Sharedможет быть гораздо больше, чем просто .
Хомякен
-3

Вы также можете ввести:

whoкоторый говорит вам, кто вошел в систему и откуда они пришли. Полезно, если вы ищете человека, который физически находится в том же здании, что и вы, или в каком-то другом конкретном месте.

wкоторый говорит вам, кто вошел в систему, и что они делают. Особенно полезно: «холостая» часть. Это позволяет вам увидеть, действительно ли они сидят там, печатая прямо на клавиатуре в данный момент.

Иордания
источник