bio*_*ard 8 mount login users home-directory
在重新安装 Ubuntu 12.04 LTS 之前,我卸载了 /home 目录。干净地重新安装后,我重新创建了一些用户并安装了 ubuntu-desktop 包,然后重新安装了旧的 /home 目录。所有的文件都已经恢复了,我只要用shell登录就没有问题了。但是,当我尝试登录 GUI 时,它只会重新加载登录屏幕。自从我将旧的 /home 目录包含在/etc/fstab
.
尝试遵循此处的解决方案,我在每个用户的/home
目录中查找 .Xauthority 文件并注意到一些奇怪的东西,用户似乎已经混淆了。例如,ls -lah | grep Xauthority
在/home/bob
将显示为:
-rw------- 1 emily emily 53 Nov 29 10:19 .Xauthority
Run Code Online (Sandbox Code Playgroud)
等等。我的猜测是我没有按照与旧系统相同的顺序重新创建用户,所以当我挂载旧/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
Run Code Online (Sandbox Code Playgroud)
内容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
Run Code Online (Sandbox Code Playgroud)
注意: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]
Run Code Online (Sandbox Code Playgroud)
如您所见,用户的marc
文档分散在许多不同的磁盘和分区上。
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
Run Code Online (Sandbox Code Playgroud)
在这个系统中,oli
正确的 UID 是 1000,但如果我做了一些事情1001
,那么我可以简单地用usermod
它来打它。假设我想交换oli
和test
的 UID。这是一个三跳游戏,因为两个用户不能共享 UID。不过他们可以共享一个组。
sudo usermod -u 1099 -g 1000 test
sudo usermod -u 1001 -g 1001 oli
sudo usermod -u 1000 test
Run Code Online (Sandbox Code Playgroud)
需要注意的是:如果您当前的用户是变更中的用户之一,sudo su
则在您以 root 身份启动并运行所有内容之前。请记住,安全装置已关闭。您不想在这个过程进行到一半时让您的 sudo 权限失效。
您需要演奏这种芭蕾舞,直到 /home/ 中的用户名与其 UID 对齐(如图所示ls -ln /home
)。或者,您可以通过几次调用来更改所有文件find
,但我个人认为这是浪费时间。通过用户系统集中修复此问题更容易、更快捷且潜在破坏性更小。
下次记得提前检查一下 UID 。争论--uid nnn
将使adduser
这变得毫无痛苦。