在主机上重命名 Ubuntu 离线客户虚拟机内的用户

在主机上重命名 Ubuntu 离线客户虚拟机内的用户

我需要的是一种在无需运行 VM 而是挂载 VM(离线)的情况下在 Ubuntu Guest VM 中重命名用户的方法。


更详细的描述

在我的 VDI 中,每台计算机都运行一个非常简单的 Linux 主机系统(各种版本,主要是 Ubuntu 13.04 或 OpenSuSE 12.3,但取决于客户端)。用户实际上不会使用此操作系统,而是使用在完成一些配置后自动启动的 Ubuntu 20.04 VM。

我想在用户登录虚拟机之前重命名存储在虚拟机中的本地用户。(实际上自动登录已激活,因此登录无需用户交互。)我尝试使用在启动时执行的命令usermod(存储在虚拟机中)通过脚本执行此操作,但这似乎不起作用。(使用 cronjob 或 systemd 服务都不起作用,但这是一个完全不同的问题。)

所以我现在要做的是安装虚拟机它启动并离线编辑它。问题是我无法在离线 VM 中执行命令(或者我可以吗?),所以 usermod 不是一个选项。相反,可以使用 libguestfs 和命令编辑文件virt-edit。有没有办法通过编辑 VM 中的一些文件来编辑用户名?

我尝试编辑/etc/passwd和(用于自动登录)/etc/lightdm/lightdm.conf,但这样做不起作用。更具体地说,系统无法自动登录用户。虽然登录 GUI 中显示了新用户名。手动登录尝试(输入密码)被拒绝,因为密码错误,使用了与之前相同的密码。

注意:我在主机和客户机上都拥有 root 访问权限。

澄清一下:我不一定需要重命名/home/username文件夹,但如果这样可以更容易一些,那也没关系。

答案1

如果客户机使用基本密码数据库而不是其他不同的后端,您可以挂载虚拟磁盘并按照网络上的各种指南手动创建用户。
例如:
https://unix.stackexchange.com/questions/153225/what-steps-to-add-a-user-to-a-system-without-using-useradd-adduser
进而:
https://unix.stackexchange.com/questions/81240/manually-generate-password-for-etc-shadow

相关内容