首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强迫用户在自动安装中第一次登录时更改密码?

如何强迫用户在自动安装中第一次登录时更改密码?
EN

Ask Ubuntu用户
提问于 2021-02-28 22:36:18
回答 1查看 2K关注 0票数 2

我是网靴安装Ubuntu焦点,我有所有基本的东西工作,没有问题。我使用这个模板作为用户数据yaml文件,它使用户,设置密码,并导入我指定的任何ssh键:

代码语言:javascript
复制
#cloud-config
autoinstall:
  apt:
    geoip: true
    preserve_sources_list: false
    primary:
    - arches: [amd64, i386]
      uri: http://us.archive.ubuntu.com/ubuntu
  identity: {
    hostname: ,
    password: ,
    realname: ,
    username: 
  }
  user-data:
    timezone: America/Los_Angeles
  keyboard: {layout: us, toggle: null, variant: ''}
  locale: en_US
  network:
    ethernets:
      mainif:
        match:
          macaddress: 
        set-name: eth0
      eth0:
        dhcp4: true
    version: 2
  ssh:
    allow-pw: true
    authorized-keys: [  ]
    install-server: true
  version: 1

我想使它,以便用户必须更改他们的密码在第一次登录。

我尝试过的事情:

  • 迟来的命令curtin in - --target=/--过期--这是因为延迟命令显然是在创建用户之前执行的,尽管文档中说Shell命令在安装成功并安装了任何更新和包之后运行,就在系统之前,该命令在退出状态1.手动登录,对/target进行着色,并尝试命令确认它,说用户'dan‘不存在,并且它没有显示在/etc/passwd或/etc/影子中:
  • 使用标识部分中的chpasswd: {expire: True},安装程序会崩溃,说chpasswd是意外的。
  • 使用bootcmd,这将被忽略。
  • 使用延迟命令在/target - /usr/bin/echo "@reboot root /usr/bin/passwd -到期dan & rm /etc/cron.d/update-pass“>/target/etc/cron.d/update-传递中写入cron -传递这一任务,但似乎非常脆弱,而且非常难以维护。

自动安装程序有我还没有找到的内置功能吗?

EN

回答 1

Ask Ubuntu用户

发布于 2021-03-01 22:44:02

编辑:我将保留我在下面共享的内容,但我意识到,当您真正想要强迫用户在第一次登录时更改密码时,我会专注于更改用户创建选项。

cloud-init似乎确实有一个过期密码选项。因此,您仍然可以使用late-commands修改文件/target/var/lib/cloud/seed/nocloud-net/user-data

https://cloudinit.readthedocs.io/en/latest/topics/modules.html#set-passwords

默认情况下,系统上的所有用户的密码都将过期(这意味着用户下次登录时必须重置密码)。

查看来源,该语句似乎只适用于使用chpasswd指定密码的用户。向user-data添加如下配置可能会迫使用户在下一次登录时更改密码

代码语言:javascript
复制
chpasswd:
    list: |
        :

以下的<#>Original帖子

您必须使用late-commands调用sed来修改文件/target/var/lib/cloud/seed/nocloud-net/user-data

服务器安装程序subiquity接受您的autoinstall配置,并创建cloud-init配置,以便在第一次引导时使用。然而,subiquity只支持cloud-init实际能够完成的一个子集。查看源代码,您可以看到subiquity实际上将此设置硬编码到'lock_passwd': False,中的位置。

https://github.com/canonical/subiquity/blob/a76581cd2b973b55e55c6ac05b5bf47168493140/subiquity/models/subiquity.py#L197

您无法在late-commands中更改用户,因为用户还不存在。用户在第一次引导时由cloud-init创建。

这个片段还没有经过测试,但是像这样的autoinstall配置应该可以做您想做的事情。

代码语言:javascript
复制
late-commands:
    - sed -ie 's/lock.passwd.*/lock_passwd: true,/' /target/var/lib/cloud/seed/nocloud-net/user-data

小细节。根据子版本的不同,user-data文件可能包含lock_passwdlock-passwd。regex lock.passwd应该匹配两者,而cloud-init需要lock_passwd。在最初的20.04版本- https://github.com/canonical/subiquity/pull/784中有一个错误。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1320127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档