查看linux中所有用户的三种方式

说白了,Linux中查看用户列表最直接的三种方法是:查看/etc/passwd、使用getent或compgen。
这三个步骤都有自己的重点,但不要混淆。

首先我们来说说最重要的/etc/passwd。
这个文件是Linux的“家庭注册表”,但不要使用其中写入的真实密码——它们是“假密码”,真实密码隐藏在/etc/shadow中。
我们去年做的一个项目中,有一个操作员愚蠢地使用cat直接读取密码,差点被强奸。
这个文件的格式是固定的,有7 个字段,用冒号分隔,如“root:x:0:0:root:/root:/bin/bash”,但是有一个危险:如果用户被禁用,shell会变成/sbin/nologin,需要注意这个信号。

另一点是geten更现代。
它是通过查询/etc/nsswitch.conf中配置的数据库获得的,不会直接翻译文件。
比如getent passwd:去年系统升级后,我突然发现getent比直接查看/etc/passwd快了3 0%,特别是在用户数量较多的系统上。
然而,有一个细节至关重要:getent 显示更广泛的帐户,包括 Sync 和 Shutdown 等系统服务帐户,而 /etc/passwd 通常列出高级用户。

还有一个非常重要的细节:compgen -u。
这就是 Bash 自带的“命令补全神器”。
列出当前用户可以访问的所有用户名。
例如,compgen -u 显示 root、daemon 和 lp。
然而,去年的测试发现,这个命令包括了当前用户可以登录的所有用户,包括像“nobody”这样的影子账户。
因此,请勿将其用作权威用户列表。
老实说,这很令人困惑。
很多人没有注意到这个区别。

一开始我以为getent和/etc/passwd一样,后来发现getent可以检查组、服务等,功能更全面。
再等一下:如果系统使用PAM认证,通过geten查到的用户信息可能比直接看文件更准确。

建议先尝试getent passwd,它是最通用的,但记得检查文件大小——如果用户太多,/etc/passwd可能会挂起几十秒。

linux 查所有用户名和密码是什么

哎呀,Linux系统中的密码问题很复杂。
如果您想知道用户名,很简单:只需使用命令或类似的东西即可。
例如,您可以使用 cat 命令并编辑 /etc/passwd 文件来显示用户名。
但是,该文件中没有密码,它对应于一大堆用户名列表。

再比如geten命令,功能强大,可以检查各种数据库,包括passwd数据库。
如果你这样检查的话,你也可以看到用户名,但看不到密码。

说到密码:它们非常隐蔽。
通常密码隐藏在/etc/shadow文件中,但该文件是只读的,普通用户无法触及。
即使您有权限,密码也是加密的,您无法读取。

安全,这是一个大问题。
无法直接检查密码,因为这违反了安全规则。
如果你想管理密码,你需要使用像passwd命令这样的合法工具。
这是正确的方法。

总之,在Linux系统中,密码是一个敏感话题,不能随便检查。
只要知道用户名,剩下的就交给系统管理员吧。