2014-10-06 69 views
1

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

回答

0

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

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

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

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

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

注意:请注意,如果你删除了一些用户,他们的主目录将保留在实例,他们将不能够通过SSH进入任何情况下,除非手动设置自己的SSH密钥对一些具体的实例。

如果你想加深和知道为什么一切工作按计划,你可以看到实例与运行级别2通过sudo runlevel运行。

如您所知,一旦系统启动,它将执行/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,你可以看到它是如何调用属于utils的方法useradd的。py to create the useradd the user to the sudoers fileput the SSH key在他的~/.ssh/authorized_keys文件中。

希望它有帮助。

+0

谢谢,那肯定会清除那个。 – Arcane 2014-10-07 20:25:55