获取所有用户帐户的简单方法

获取所有用户帐户的简单方法

我正在迁移到新服务器,并且由于不存在用户帐户而遇到了许多问题(例如,nginx 似乎在新系统上的 nginx 用户下运行,而在旧系统上的 www-data 下运行)。

有没有一种简单的方法来获取所有用户/组帐户信息。(理想情况下,如果有任何区别的话,我想用 Ansible 编写新帐户的脚本)。

答案1

cat /etc/passwd  # show all users
cat /etc/group   # show all groups

然后,您可以将输出通过管道传输到其他程序/脚本进行进一步处理。

答案2

如何列出所有用户和组取决于如何配置身份验证。

最基本的是用于本地身份验证的/etc/passwd和文件。/etc/group

当用户/组数据集中存储时(例如在 LDAP、NIS、Hesiod 等中),使用这些文件不足以获取完整列表。

通常配置中央身份验证此外和文件/etc/passwd/etc/group以便通过名称服务切换配置文件来启动系统并在单用户模式下运行/etc/nsswitch.conf

如果配置了 NSS:

getent passwd 

将会呈现所有用户帐户:来自/etc/passwd和您的中央用户目录的。

getent group 

将会呈现所有群组

通过监视命令的退出状态,getent您还将知道是否确实列出了所有用户/组(退出代码0)或者是否遗漏了一些(退出代码3表示数据库不支持枚举,您需要使用适合该特定数据库的工具...)。

相关内容