我正在迁移到新服务器,并且由于不存在用户帐户而遇到了许多问题(例如,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
表示数据库不支持枚举,您需要使用适合该特定数据库的工具...)。