恢复主目录的步骤?(用户 ID 等)

恢复主目录的步骤?(用户 ID 等)

假设我有一个home.tgz并且想将其放在一个刚刚安装的 ubuntu 盒子上。

解压文件之前我需要做什么?创建用户?用户 ID 呢?群组呢?加密呢?

答案1

  1. 创建用户帐户,可选择使用与之前相同的 UID 和 GID,并将主目录置于同一位置(例如/home/sid
  2. 设置密码
  3. 将文件解压到用户的主目录中
  4. 如果您使用的 UID 和 GID 与之前不同,请更改所有权
  5. 将用户添加到所需的任何其他组

如果您想简化流程,您需要做几件事。下面我假设用户名为mark

  1. 记录用户的组成员身份:cd ~mark && id mark > mark.identity
  2. 从其父目录备份主目录 - 例如,如果它是,/home/mark那么你需要cd /home && tar jcpf mark.tar.bz2 mark
  3. 在新主机上将其还原到 /home( cd /home && tar xjpf mark.tar.bz2)
  4. 识别组、用户名和组成员身份,然后恢复它们。这应该很容易编写脚本,大致如下:
/bin/bash #!/bin/bash
用户="${1}"
如果 [ !-e "${USER}".identity ]; 那么
  echo “没有身份文件”
  出口

GD =`awk'{打印$ 2“ $ {USER}” .identity}'| sed -e“ s /。*(// g“ -e“ s /)*// g“`
GLIST =`awk'{打印$NF“{USER}”.identity}'|sed-e“s / [az] * = //g”-e“s / [0-9] *( //g”-e“s /) //g”`

对于 ${GD} ${GLIST} 中的 GROUP;执行
  getent 组 ${GROUP} >/dev/null
  状态=${?}
  如果 [ ${STATUS} -ne 0 ]; 那么
    groupadd ${群组}
完毕

useradd -g "${GD}" -G "${GLIST}" "${USER}"

请注意,我只是在这里写了它,我还没有测试过它。


是的,它假设所有组都存在。扩展脚本来检查每个组是否存在并创建它并不难。上述更改应该可以解决这个问题。

还要注意的是,这不会处理通过 sudo 获得的权限。如果您有本地电子邮件或其他任何东西,它也不会有帮助。它所做的只是将用户设置为与以前相同的组。此外,如果目录已经存在,它会覆盖它,因此需要注意。

答案2

在我的测试虚拟机中,我添加了 bob (1001) 和 alice (1002)。我删除了 bob,并添加了 joe (1001)。抱歉,我错了。您只需为每个用户重新分配主文件夹所有者和组即可。

这可能看起来很乏味,但这只是对这 3 个步骤的详细解释。

您需要超级用户权限才能执行这些维护任务,因此我们在每个命令前加上前缀sudo,以赋予我们这些权限。

在我们新安装的 Ubuntu 上:

  • #1 创建用户账户:sudo adduser alice
  • #2 将备份文件解压到她的新主目录中
  • #3 让 Alice 成为文件所有者:sudo chown -R alice\:alice /home/alice

解释这些命令:

  • #1 adduser 为我们创建 /home/alice 目录(以及其他内容)
  • #3 该选项意味着递归应用所有权,alice\:alice 是我们为文件-R指定新内容的方式,我们告诉 chown 在 上执行此任务。owner\:group/home/alice

现在 /home/alice 下的所有文件都属于她了,她应该可以毫无问题地访问她的文件。希望这更有意义。

创建具有相同名称的新用户帐户,那么它将具有与旧用户帐户相同的 UID。我记得在某个邮件列表中读到过它,但我找不到我读到它的来源。

相关内容