我正在迁移到一个新的服务器,我有很多问题,由于用户帐户不存在(例如nginx似乎运行在旧系统上的新系统www-data上的nginx用户下)。
有一个简单的方法来获取所有的用户/组帐户信息。 (理想情况下,我想用Ansible来创build新账户,如果这有什么区别的话)。
cat /etc/passwd # show all users cat /etc/group # show all groups
然后,您可以将输出传输到其他程序/脚本以供进一步处理。
如何列出所有用户和组取决于如何configuration身份validation。
最基本的是用于本地身份validation的/etc/passwd和/etc/group文件。
当用户/组数据集中存储时,使用这些文件不足以获得完整列表,例如在LDAP,NIS,Hesiod等中。
通常,除了 /etc/passwd和/etc/group文件之外,还要configuration中央身份validation,以便通过名称服务交换机configuration文件/etc/nsswitch.conf在单用户模式下引导系统并使其可用
如果configuration了NSS:
getent passwd
将显示所有用户帐户 :来自/etc/passwd和中央用户目录的帐户 。
getent group
将显示所有组 。
通过监视getent命令的退出状态,您也将知道是否确实列出了所有用户/组(退出代码0 )或者您缺less一些(退出代码3指示不支持枚举的数据库,您将需要为特定的数据库使用适当的工具…)。