如何列出终端中的所有用户帐户?


74

如何在终端中列出所有本地用户帐户(是否已登录?)这些命令userswho不提供此信息。OS X版本是10.6.8。

我已经看到了此建议的命令- dscacheutil -q group

但它仅列出域用户组和非本地帐户。


1
作为AIX的长期用户,我肯定会错过他们烘焙到UNIX中的系统管理命令。为此,lsuser很高兴。
bmike

Answers:


68

怎么样

dscacheutil -q user | grep -A 3 -B 2 -e uid:\ 5'[0-9][0-9]'

我喜欢这个选项。不过,它会返回以下划线开头的一堆帐户。有什么办法可以过滤掉吗?例如_softwareupdate,_mysql
codecowboy 2011年

9
通过grep dscl . list /Users | grep -v ^_.*
传递

很酷!我必须记住这一点。
daviesgeek

5
这也很容易提交给内存。
凯利


10

从10.6开始的用户帐户由OpenDirectory管理。与OpenDirectory用户相关的后端文件在这里:

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

ls *在此目录中执行将枚举系统上注册的所有本地用户。执行plutil -p <file>.plist将使您能够读取指定用户帐户的某些属性(即当前主目录路径)。

这是相当无证的,所以我接受投票。但是,此方法可用于检查未运行且用户仅具有脱机磁盘映像的系统。


我喜欢它,但需要sudo / root才能工作,std admin用户获得了权限错误。 dscl适用于标准管理员。
JL Peyret's

6

dscacheutil 返回的不只是本地用户,例如,我查询过Directory Services的所有用户也会显示。

我发现这更有用:

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

虽然它也返回的喜欢daemonnobodyroot


4

JMTCW重新创建命令行友好/etc/passwd等效项(尽管顺序不完全相同):

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

或者,如果您希望使用空格分隔的输出(但解析GECOS字段会稍微复杂一点:

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

2

如果没有用户主目录被移动,则将被移动ls /users。除了它还会列出“共享”之类的目录。


2
永远不要这样做。还有不止Shared这些。
hamstergene

-3

您也可以输入:

who告诉您谁登录以及他们来自何处。如果您要寻找的人实际上与您在同一栋建筑物中,或者在其他特定位置,则很有用。

w告诉您谁登录了,他们在做什么。尤其有用:“空闲”部分。这样一来,您就可以查看他们现在是否真的坐在那里,正在用键盘打字。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.