LXD, the system container manager, has become a popular choice for many developers and sysadmins due to its lightweight nature and ease of use. However, like any software, it can sometimes present challenges. One such challenge that has been identified in LXD version 5.18, especially in multi-user environments, is the difficulty in properly deleting a user. This post will delve into this issue and provide a comprehensive solution.
The Problem
In LXD 5.18 multi-user setups, when attempting to delete a user from the system, not all references to that user and their associated UID are removed. This lingering data can cause conflicts, especially if you try to recreate a user with the same name or if the system tries to reuse the UID for a new user.
The Solution
To ensure a clean removal of a user and all their associated LXD resources, follow the steps below:
- Delete the User from the System:
- First, retrieve the user’s UID with:
DELUID = id <username>
- Then, delete the user and their home directory:
sudo deluser <username> --remove-home
- First, retrieve the user’s UID with:
- Clean Up LXD Resources:
- Switch to the user’s LXD project (assuming each user has their own LXD project based on their UID):
lxc project switch user-${DELUID}
- Delete all instances (containers, VMs) associated with the user’s project:
lxc list lxc delete <instances> --force
- Remove all images tied to that user:
lxc image list lxc image delete <FINGERPRINT>
- Finally, delete the user’s LXD project:
lxc project delete user-${DELUID}
- Switch to the user’s LXD project (assuming each user has their own LXD project based on their UID):
- Remove LXD Network Resources:
- If each user has their own LXD bridge network, remove it:
lxc network list lxc network delete lxdbr-${DELUID}
- If each user has their own LXD bridge network, remove it:
- Revoke Trust:
- List all trusted certificates:
lxc config trust list
- Delete the certificate associated with the user:
lxc config trust delete lxd-user-${DELUID}
- List all trusted certificates:
- Clean Up User’s LXD Configuration:
- Ensure all user-specific LXD configurations and data are removed:
sudo ls -al /var/snap/lxd/common/lxd-user/users sudo rm -rf /var/snap/lxd/common/lxd-user/users/${DELUID}
- Ensure all user-specific LXD configurations and data are removed:
- Add a New User:
- With all references to the old user cleaned up, you can now safely add a new user to the system:
sudo adduser <new_user> sudo adduser <new_user> users
- With all references to the old user cleaned up, you can now safely add a new user to the system:
Conclusion
While LXD offers a powerful platform for container management, it’s essential to be aware of potential pitfalls and know how to navigate them. This guide provides a solution to a specific issue in LXD 5.18, ensuring a smooth user management experience in multi-user environments. Always remember to backup any crucial data before performing such operations and double-check each command to avoid unintended data loss.