在新实例上生成的旧用户帐户

时间:2014-10-06 18:17:49

标签: google-compute-engine

当我生成一个新的VM实例时,我注意到如果我进入/ home目录,我会看到我创建的过去用户帐户的主目录。我发现这很奇怪,因为我从头开始创建一个新实例。谁能告诉你为什么会这样。我确保删除所有旧实例和磁盘。

1 个答案:

答案 0 :(得分:0)

如果您没有实例元数据,Google Compute Engine会根据您的实例元数据或项目元数据创建帐户。

在这种情况下,它使用项目的元数据。要查看项目的元数据,请转到开发人员控制台中的Compute-> Compute Engine->元数据,然后单击页面顶部的“SSH密钥”。在那里,您可以找到包含两列的列表:

  • 在左侧,您可以看到每次创建实例时将生成的用户名。

  • 在右侧,您可以看到将为该用户存储在<username>/.ssh/authorized_keys中的SSH密钥。

每个用户可以有多个SSH密钥。因此,如果您要从中删除所有旧用户,只需点击“修改”并删除左栏中显示这些用户的所有行。

注意:请注意,如果删除某些用户,他们的主目录将保留在实例中,除非他们为某些用户手动设置SSH密钥,否则他们将无法通过SSH连接到任何实例特定情况。

如果您想深化并知道为什么一切按预期工作,您可以看到该实例通过sudo runlevel运行在运行级别2上。

您可能知道,一旦系统启动,它将执行/etc/rc2.d/文件夹中的所有脚本,并且有一个负责管理该实例的所有项目帐户。您可以在/etc/rc2.d/S03google-accounts-manager找到它,这是指向/etc/init.d/google-accounts-manager的链接。

这个/usr/share/google/google_daemon/manage_accounts.py运行github repository以及它使用的文件。此脚本使用desiredaccounts.py和accountsmanager.py编排与帐户相关的所有内容。

desiredaccounts.py用于获取实例和项目的所有用户及其SSH密钥,查看两个URL。您可以使用以下命令检查实例元数据:

`curl http://169.254.169.254/computeMetadata/v1/instance/attributes/sshKeys?%s -H "Metadata-Flavor: Google"`

使用以下命令的项目元数据:

`curl http://169.254.169.254/computeMetadata/v1/project/attributes/sshKeys?%s -H "Metadata-Flavor: Google"`

只有当实例元数据为空时,脚本才会使用项目元数据。

一旦脚本具有所需的帐户,它就会使用accountsmanager.py来调用UpdateUser method

最后在account.py中,您可以看到它如何调用属于他~/.ssh/authorized_keys中的utils.py to create the useradd the user to the sudoers fileput the SSH key的方法UserAdd文件。

希望它有所帮助。