我想要实现的目标:
使用已建立的用户创建多个新用户,每个新用户都具有相同的启动设置、相同的应用程序(例如 Slack)、相同的配置(例如安装的 conda 和定义的内核)等,而无需再次进入并执行整个设置过程。
我尝试过的:
1: 我读过这个问题 克隆Linux用户(复制用户,基于另一个用户)并找到了这个答案https://unix.stackexchange.com/a/268405,我尝试过,虽然它创建了具有正确权限和所有内容的新用户,但它并没有像我希望的那样复制所有内容。
2:我读过很多其他内容,这些内容要么是复制粘贴到某些第三方博客上的问题和答案,要么是类似“是的,Linux 本身不支持”的内容(因此上面的脚本答案)。
是否可以在将用户的帐户设置为所需状态后“克隆”用户,以便不必从头开始设置新用户?
答案1
是的,这是可能的。非常古老的东西/etc/skel
就是为此而设计的!但这不是“克隆”,而是“为新用户定义模板”。
当您使用adduser
创建用户时,它将从/etc/skel
.通常这只是.bashrc
和.profile
,但它可以包含您喜欢的任何内容。
如果您以非常无菌的方式设置用户(即新创建并按照您喜欢的方式设置,没有任何个人内容),那么您可以将主目录复制到/etc/skel/
.当您使用 创建新用户时adduser
,这些文件将被复制到新用户的主目录。
对于您的具体观点:
- 启动设置。用户特定的服务位于
~/.config/systemd/user
.自动启动桌面条目位于~/.config/autostart
.通过将现有的主目录复制到/etc/skel
您可以保留这些内容。 - 应用程序(例如 Slack)。 debian 上的应用程序是(或至少应该)安装在系统范围内的。如果您使用过
sudo apt install slack
,即使它来自第三方存储库,它也会在系统范围内安装。我对包裹不太确定snapd
。如果您关心的是现有计算机上的新用户,那么是的,应用程序(例如 slack)也会为该新用户安装。 - 相同的配置(例如安装了 conda 并定义了内核)等。。这个有点宽泛。
- 相同配置 是的。这可能包括深色主题、浏览器主页、浏览器书签和 bash 别名等。这些都存储在您的主目录中,因此将主目录复制到
/etc/skel
将保留该目录。 - 内核定义,内核是系统范围的。同一系统上的所有用户将运行相同的内核。
- 康达:是的,所有应用程序都在系统范围内安装(根据前面的观点)。我看到那
conda
是一个包管理器。如果它在系统范围内安装东西,那么所有用户都将拥有它,即使不做任何事情/etc/skel
。如果它将某些内容安装到主目录,则需要将这些内容放入/etc/skel
新用户的主目录中。
- 相同配置 是的。这可能包括深色主题、浏览器主页、浏览器书签和 bash 别名等。这些都存储在您的主目录中,因此将主目录复制到
在简单地复制/home/exampleuser
到/etc/skel
.确保您使用的是新的、无菌的用户帐户来执行此操作。 ssh private 和authorized_keys 之类的东西也在主目录中。您可能不希望这些内容被重复。个人数据也可能存在于此处,因此请确保在需要时清除所有数据。
此外,您的用户在主目录之外的权限也不会被复制。一般来说,您的用户应该只拥有自己目录中的内容。
如果您对权限有任何特殊要求,那么确保这些要求由组处理可能是个好主意。例如,如果您希望用户能够使用 访问某些命令sudo
,则请确保/etc/sudoers
为组定义这些权限,然后确保新用户在创建时属于该组。