我尝试按照说明进行操作:
- https://stackoverflow.com/a/61868231/1492613
- https://gist.github.com/leogallego/a614c61457ed22cb1d960b32de4a1b01#file-ubuntu-cloud-virtualbox-sh-L46-L56
autoinstall:
...
user-data:
write_files:
- content: |
cloud_init_has_run
path: /cloud_init_flag
users:
- default
- name: kim
passwd: <hash>
shell: /bin/bash
lock-passwd: false
ssh_pwauth: True
chpasswd: { expire: False }
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users, admin
或者把用户,作为同级别的自动安装
users:
- default
- name: kim
passwd: <hash>
shell: /bin/bash
lock-passwd: false
ssh_pwauth: True
chpasswd: { expire: False }
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users, admin
autoinstall:
两个用户都不工作,但 write_files 确实有效。ls /home/
不显示 kim,而只显示我的默认用户身份。
谁能解释如何让用户阻止工作?
更新
passwd 似乎从来没有用过,我尝试了以下命令来创建哈希:
mkpasswd -m sha512crypt -s
mkpasswd --method=SHA-512 --rounds=4096 -s
我只是将输出哈希放入,passwd: "<hash>"
但登录总是因密码错误而失败,我只能使用我的 ssh 密钥登录。知道如何在这里指定密码吗?
在 /var/log/cloud-init.log 我们可以看到:
2021-09-30 15:18:39,580 - __init__.py[DEBUG]: Adding user testuser
2021-09-30 15:18:39,580 - subp.py[DEBUG]: Running hidden command to protect sensitive input/output logstring: ['useradd', 'testuser', '--comment', 'testuser', '--groups', 'users,sudo,admin,cdrom,dip,plugdev,lpadmin,lxd,libvirt', '--password', 'REDACTED', '--shell', '/bin/bash', '-m']
2021-09-30 15:18:39,606 - subp.py[DEBUG]: Running command ['passwd', '-l', 'testuser'] with allowed return codes [0] (shell=False, capture=True)
2021-09-30 15:18:39,619 - util.py[DEBUG]: Reading from /etc/sudoers (quiet=False)
我终于找到了为什么它不起作用, /etc/shadow 有点错误:
testuser:!$6$02H0ZRN.QfL7$G8/Jh7bZNlIEPAsGKZOBUog89a559t/LSWXAyqncOpJytlls8hsGHQgeBdWGoYhedZ0v7bsVNFlRf/S0Tusug1:18900:0:99999:7:::
额外的!
导致失败。删除它使其工作。这是一个错误还是有一些
正确的标志是:lock_passwd: false
而不是lock-passwd: false