Como montar um diretório antigo / home após a reinstalação limpa do SO?

7

Antes de reinstalar o Ubuntu 12.04 LTS, eu desmontei o diretório / home. Depois de uma reinstalação limpa, recriou alguns dos usuários e instalei o pacote ubuntu-desktop, depois montei novamente o diretório antigo / home. Todos os documentos foram restaurados e não tenho nenhum problema, desde que eu faça o login com o shell. No entanto, quando tento acessar a GUI, apenas recarrega a tela de login. Isso vem acontecendo desde que incluí o diretório antigo / home em /etc/fstab .

Tentando seguir a solução aqui , procurei pelo .Xauthority arquivos no diretório /home de cada usuário e notei algo estranho, os usuários parecem ter sido misturados. Por exemplo, ls -lah | grep Xauthority in /home/bob seria mostrado como:

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

e assim por diante. Meu palpite é que eu não recriou os usuários na mesma ordem que no sistema antigo, então as coisas ficaram esquisitas quando montei o antigo diretório /home . Contudo! Eu preciso ser capaz de ligar os arquivos antigos do diretório /home , porque eles são vários TB e eu não tenho espaço para transferi-los aqui e ali livremente, nem estou autorizado a excluir nada. O que devo fazer para corrigir isso?

É uma boa ideia substituir todos os arquivos ocultos em cada antigo diretório /home/user pelos novos?

[informações adicionais]

Conteúdo de ls -l /home (após a montagem antiga /home ); observação: lost+found NÃO deveria ser um usuário.

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

Conteúdo de cat /etc/passwd (restrito aos usuários listados acima):

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

Nota: o usuário alice não foi recriado após a reinstalação do sistema operacional porque a conta não era mais necessária.

Saída de 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]

Como você pode ver, o usuário marc tem documentos fragmentados em vários discos e partições diferentes.

    
por biohazard 11.03.2014 / 04:45

1 resposta

2

ln -n mostrará o que o filesytem acha que o UID e os GIDs para os usuários devem ter. Aqui está um exemplo do meu sistema.

$ 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

Neste sistema, oli tem o UID correto de 1000, mas se eu fiz algo para que fosse 1001 , eu poderia simplesmente usar usermod para dar um soco nele. Digamos que eu queira trocar os UIDs de oli e test . Este é um jogo de três saltos, pois dois usuários não podem compartilhar um UID. Eles podem compartilhar um grupo embora.

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

Uma nota : se o usuário atual for um dos usuários no changearound, sudo su antes de iniciar e executar tudo como raiz. Apenas lembre-se de que a segurança está desligada. Você não quer ficar no meio desse processo e ter seus privilégios sudo em você.

Você precisará jogar esse tipo de balé até que os nomes de usuários em / home / estejam alinhados com seus UIDs (como mostrado em ls -ln /home ). Alternativamente, você pode alterar todos os arquivos com algumas chamadas find , mas eu pessoalmente acho que isso é um grande desperdício de tempo. É mais fácil, mais rápido e potencialmente menos destrutivo corrigir isso centralmente através do sistema do usuário.

Da próxima vez, lembre-se de verificar os UIDs antecipadamente. O argumento --uid nnn em adduser tornará isso indolor.

    
por Oli 15.03.2014 / 17:43