Linux
LXD 和 Cloud-init 的新使用者密碼
我正在嘗試創建一個配置文件來自動創建容器,但我在使用 cloud-init 時遇到了問題。由於某種原因,沒有為使用者設置密碼,也沒有作為 sudoer 添加。這是 YAML:
config: boot.autostart: "false" limits.cpu: "2" limits.memory: "4GB" user.user-data: | #cloud-config users: - name: matheus gecos: Matheus Saraiva da Silva lock_password: false plain_text_passwd: tyy7854 ssh-authorized-keys: - ssh-rsa myrsa package_update: true package_upgrade: true package_reboot_if_required: true snap: commands: 00: snap install juju --classic 01: snap install charmcraft --classic 02: snap install node --classic apt: preserve_source_list: true packages: - gcc - podman runcmd: - usermod, -aG, sudo matheus - [su, matheus, -c, "wget https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb -P /home/matheus/Downloads"] - [su, matheus, -c, "sudo dpkg -i /home/matheus/minikube_latest_amd64.deb"] - [su, matheus, -c, "git config --global user.name matheusssilva"] - [su, matheus, -c, "git config --global user.email matheus.saraiva@gmail.com"] description: TaskStack enviroment lxd profile devices: eth0: name: eth0 network: lxdbr0 type: nic root: path: / pool: default type: disk name: TaskStack used_by: []
當我嘗試使用 sudo 執行某些操作時,配置文件中的密碼不起作用。所以我有義務使用 root 使用者更改使用者密碼
#passwd matheus
。它是一個錯誤嗎?
確保您使用正確的鍵名:
lock_passwd
代替lock_password
preserve_sources_list
代替preserve_source_list
ssh_authorized_keys
而不是ssh-authorized-keys
(這只是一個棄用警告,目前沒有傷害任何東西)使用以下方法可以更容易地擷取這些類型的錯誤
cloud-init schema --system
:$ cloud-init schema --system Cloud config schema deprecations: Error: Cloud config schema errors: apt: Additional properties are not allowed ('preserve_source_list' was unexpected), users.0: {'name': 'matheus', 'gecos': 'Matheus Saraiva da Silva', 'lock_password': False, 'plain_text_passwd': 'tyy7854', 'ssh-authorized-keys': ['ssh-rsa myrsa']} is not valid under any of the given schemas
runcmd
腳本儲存在/var/lib/cloud/instance/scripts/runcmd
. 如果你看一下,你會發現它可能不是你所期望的。第一行需要是一個數組,而不僅僅是一個字元串。IE,runcmd: - [usermod, -aG, sudo, matheus] - [su, matheus, -c, "wget https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb -P /home/matheus/Downloads"] - [su, matheus, -c, "sudo dpkg -i /home/matheus/minikube_latest_amd64.deb"] - [su, matheus, -c, "git config --global user.name matheusssilva"] - [su, matheus, -c, "git config --global user.email matheus.saraiva@gmail.com"]
如果您查看cloud-init 文件,而不是使用 runcmd 來設置 sudo,該
Users and Groups
模組允許設置 sudo 規則:sudo:(字元串/空)要使用的 Sudo 規則或 false。缺少 sudo 值或 null 將導致不為此使用者添加 sudo 規則。
進一步使用範例的一部分:
users: - name: newsuper sudo: ALL=(ALL) NOPASSWD:ALL
如果需要,您可以使用類似的東西來替換您的 runcmd sudo 行。