如何通过 AWS 上的 CloudInit 更改默认用户(ubuntu)

如何通过 AWS 上的 CloudInit 更改默认用户(ubuntu)

我正在使用 CloudInit 自动启动 AWS 上的实例。我遵循了以下文档(稀少):http://bazaar.launchpad.net/~cloud-init-dev/cloud-init/trunk/annotate/head%3A/doc/examples/cloud-config.txt和示例/usr/share/doc/cloud-init,但仍然还没有弄清楚如何更改默认用户名(ubuntu,id:1000)。

我知道我可以创建一个脚本来手动删除默认的 ubuntu 并添加我的用户,但考虑到 CloudInit 的存在正是为了自动化初始设置,这似乎是违反直觉的。

有任何想法吗?

答案1

根据,CloudInit 应该支持自定义指令来创建新用户,包括覆盖默认的“ubuntu”用户。我按照示例尝试过,但无法让它工作。

但是,由于 CloudInit 支持用户数据脚本,并且您可以在脚本中执行任何操作,因此我更喜欢使用标准命令,而不是尝试学习一些新的自定义指令。

以下是我在用户数据脚本中将默认用户名从“ubuntu”更改为“ubuntu”的方法。此示例使用新用户名“newuser”,您可以根据自己的喜好进行更改:

#!/bin/bash -ex
user=newuser
usermod  -l $user ubuntu
groupmod -n $user ubuntu
usermod  -d /home/$user -m $user
mv /etc/sudoers.d/90-cloudimg-ubuntu /etc/sudoers.d/90-cloudimg-$user
perl -pi -e "s/ubuntu/$user/g;" /etc/sudoers.d/90-cloudimg-$user

您可以添加此用户数据脚本来执行实例所需的任何其他初始化和配置。

更新:我写了一篇扩展的文章,描述了使用用户数据脚本的步骤以及如何在最新版本的 Ubuntu 上使用 CloudInit 执行此操作:http://alestic.com/2014/01/ec2-change-用户名

答案2

您可以将其放入用户数据中:

#cloud-config
system_info:
  default_user:
    name: otherusername

相关内容