我正在迁移到新服务器,由于用户帐户不存在,我遇到了许多问题(例如,nginx 似乎在旧系统上的新系统 www-data 上的 nginx 用户下运行)。
有没有一种简单的方法来获取所有用户/组帐户信息。(理想情况下,如果这有什么不同,我想用 Ansible 编写新帐户的创建脚本)。
我正在迁移到新服务器,由于用户帐户不存在,我遇到了许多问题(例如,nginx 似乎在旧系统上的新系统 www-data 上的 nginx 用户下运行)。
有没有一种简单的方法来获取所有用户/组帐户信息。(理想情况下,如果这有什么不同,我想用 Ansible 编写新帐户的创建脚本)。
如何列出所有用户和组取决于身份验证的配置方式。
最基本的是用于本地身份验证的
/etc/passwd
和文件。/etc/group
当用户/组数据集中存储时,例如在 LDAP、NIS、Hesiod 等中,使用这些文件不足以获得完整的列表。
除了
/etc/passwd
和文件之外,通常还配置中央身份验证,/etc/group
以允许系统通过名称服务切换配置文件在单用户模式下启动和运行/etc/nsswitch.conf
如果配置了 NSS:
将显示所有用户帐户:来自
/etc/passwd
您的中央用户目录的那些。将显示所有组。
通过监视
getent
命令的退出状态,您还将知道您是否确实列出了所有用户/组(退出代码0
)或者您缺少一些(退出代码3
表示数据库不支持枚举,您需要使用该特定数据库的适当工具...)。然后,您可以将输出通过管道传输到其他程序/脚本以进行进一步处理。