如何在操作系统全新重新安装后挂载旧的 /home 目录?

如何在操作系统全新重新安装后挂载旧的 /home 目录?

在重新安装 Ubuntu 12.04 LTS 之前,我卸载了 /home 目录。在全新重新安装后,我重新创建了一些用户并安装了 ubuntu-desktop 包,然后重新挂载了旧的 /home 目录。所有文档都已恢复,只要我使用 shell 登录,就不会出现任何问题。但是,当我尝试登录 GUI 时,它只会重新加载登录屏幕。自从我将旧的 /home 目录包含在 中以来,这种情况一直存在/etc/fstab

尝试遵循解决方案这里之后,我在每个用户的目录中查找了 .Xauthority 文件/home,发现有些奇怪,用户似乎混淆了。例如,ls -lah | grep Xauthority显示/home/bob为:

-rw-------  1 emily emily   53 Nov 29 10:19 .Xauthority

等等。我猜是我没有按照与旧系统相同的顺序重新创建用户,所以当我挂载旧目录时,事情变得很奇怪/home。但是!我需要能够/home按原样插入旧目录文件,因为它们有几 TB,我没有足够的空间来自由地将它们转移到这里和那里,也不允许删除任何东西。我该怎么做才能解决这个问题?

/home/user用新文件替换每个旧目录中的所有隐藏文件是一个好主意吗?

[附加信息]

的内容ls -l /home(安装旧的之后/home);注意:lost+found不应该是用户。

total 36
drwxr-xr-x 22 bob   bob    4096 Mar 11 12:23 alice
drwxr-xr-x 44 marc  marc   4096 Mar 11 12:21 emily
drwxr-xr-x 23 1004  1004   4096 Jul 29  2013 bob
drwxr-xr-x  4 1005  1005   4096 Jul 30  2013 ken
drwx------  2 root  root  16384 Mar 27  2012 lost+found
drwxr-xr-r 40 emily emily  4096 Mar 11 12:49 marc

内容cat /etc/passwd(仅限于上面列出的用户):

root:x:0:0:root:/root:/bin/bash
marc:x:1000:1000:marc,,,:/home/marc:/bin/bash
emily:x:1001:1001:emily,,,:/home/emily:/bin/bash
bob:x:1002:1002:bob,,,:/home/bob:/bin/bash
ken:x:1003:1003:ken,,,:/home:ken:/bin/bash

注意:alice重新安装操作系统后未重新创建用户,因为不再需要该帐户。

输出lsblk

NAME        MAJ:MIN RM  SIZE        RO  TYPE    MOUNTPOINT
sda     8:0     0   931.5G  0   disk
+sda1   8:1     0   285M        0   part    
+sda2   8:2     0   1K      0   part
+sda5   8:5     0   18.6G       0   part
+sda6   8:6     0   93.1G       0   part    /home
+sda7   8:7     0   93.1G       0   part
+sda8   8:8     0   698.4G          0   part    /home/marc/Data
+sda9   8:9     0   9.3G        0   part    [SWAP]
+sda10  8:10        0   18.6G       0   part    /   
sr0     11:0        1   1024M       0   rom
sdb     8:16        0   1.8T        0   disk
+sdb1   8:17        0   1.8T        0   part    /home/marc/Data2
sdc     8:32        0   1.8T        0   disk
+sdc1   8:33        0   200M        0   part    
+sdc2   8:34        0   465.8G          0   part    /home/marc/USB_Disk/Disk1
+sdc3   8:35        0   465.8G          0   part    /home/marc/USB_Disk/Disk2
+sdc4   8:36        0   465.8G          0   part    /home/emily/Data
+sdc5   8:37        0   465.6G          0   part    /var/www
sdf     8:80        0   3.7T        0   disk
+sdf1   8:81        0   1.8T        0   part    /home/ken
+sdf2   8:82        0   1.8T        0   part    /home/bob
sde     8:64        1   29.8G       0   disk
+sde1   8:65        1   29.8G       0   part    [SWAP]

如您所见,用户marc的文档分散在多个不同的磁盘和分区中。

答案1

ln -n将显示文件系统认为用户的 UID 和 GID 应该是什么。以下是我的系统中的一个例子。

$ ls -ln /home/
total 12
drwxr-xr-x  5  111  120 4096 Mar 15 10:11 hts
drwxr-xr-x 11 1000 1000 4096 Mar 15 12:34 oli
drwxr-xr-x  4 1001 1001 4096 Mar 13 08:46 test

在这个系统中,oli的 UID 为 1000,但如果我做了一些事情,使它变成1001,我就可以简单地使用usermod它来打乱它。假设我想交换olitest的 UID。这是一个三跳游戏,因为两个用户不能共享一个 UID。但他们可以共享一个组。

sudo usermod -u 1099 -g 1000 test
sudo usermod -u 1001 -g 1001 oli
sudo usermod -u 1000 test

一条注释:如果您当前的用户是 changearound 中的用户之一,那么sudo su在您开始并以 root 身份运行所有操作之前,请记住安全已关闭。您不会希望在执行此过程的一半时让您的 sudo 权限出问题。

您需要反复进行这种操作,直到 /home/ 中的用户名与其 UID 对齐(如图所示ls -ln /home)。或者,您可以通过几个find调用来更改所有文件,但我个人认为这是浪费时间。通过用户系统集中修复此问题更简单、更快捷,而且破坏性可能更小。

下次记得检查 UID预先。--uid nnn上的争论将使adduser这一切变得无痛。

相关内容