como posso vincular minha pasta pessoal a partir de outra unidade?

15

Mais especificamente, desejo que a pasta de usuário da minha conta pessoal seja outro disco que tenha mais espaço, mas mantenha minhas outras contas menores no meu ssd. Consegui copiar minha pasta de usuário para outro disco, mas agora preciso vinculá-la à pasta pessoal no meu ssd, quero acessá-la a partir de uma inicialização normal e, por favor, não me diga que o que fiz não foi o melhor coisa, eu só quero uma resposta. Como faço para criar um link que vai de / home / nome de usuário para / extra-home / nome de usuário e é reconhecido pelo sistema ao carregar as pastas do usuário?

sbergeron
fonte

Respostas:

20

Lembre-se de que suas permissões precisarão ser as mesmas. Além do link simbólico, em distribuições e sistemas de arquivos mais recentes, como root, você também pode usar bind-mount:

mkdir /home/username mount --bind --verbose /extra-home/username /home/username

Isso é útil para permitir o acesso "através" do diretório / home aos subdiretórios via daemons que, de outra forma, são configurados para evitar percorrer links simbólicos (apache, ftpd, etc.).

Você precisa se lembrar (ou script de inicialização) para ligar as reinicializações, é claro.

Joe Atzberger
fonte
Eu não sabia que links simbólicos poderiam criar esses problemas. Como tratam esses daemons /var/run/?
Paul
1
Os servidores foram projetados para restringir o acesso ao sistema de arquivos local, para evitar comprometer o sistema. Você pode pensar nisso como "coisas permitidas para usuários remotos". Eles não precisam se restringir a acessar / var / run (normalmente na inicialização / desligamento) como "coisas permitidas para esse processo". Consulte a diretiva FollowSymLinks do Apache para obter um exemplo de como permitir que o sistema de arquivos servido atravesse links simbólicos, se desejado.
Joe Atzberger
também podemos expandir / bin e / lib da mesma maneira (pode ser útil em pequenos sistemas de arquivos)?
ransh
Seu sistema precisa /bine /libna inicialização (ou seja, antes de executar o mountcomando)? Nesse caso, você não pode empregar essa estratégia.
Joe Atzberger 31/01
2
Adicionando informações aqui, como eu tinha que procurá-las, uma vez que é feito para adicionar init no / etc / fstab, aqui está o formulário. Ao usar o método que Joe descreveu mount --bind --verbose /extra-home/username /home/username, a linha /etc/fstabseria/extra-home/username /home/username none defaults,bind 0 0
Wilken
9

De acordo com esta pergunta no Superusuário, isso é possível.

Você pode criar um link simbólico usando:

ln -s /extra-home/username /home/username

Se não funcionar por algum motivo, você pode excluir o link simbólico, mover o diretório de volta e reiniciar o computador.

Louis Matthijssen
fonte
Se é uma pasta simples, você deve começar com / media / {hardrive_name} / {your folder} Eu apenas tentei isso em um servidor debian e funciona.
precisa saber é o seguinte
2

Eu tentaria o seguinte:

Enquanto estiver conectado como um usuário diferente, em um shell raiz (por exemplo sudo -i), copie o conteúdo de /home/usernamepara /extra-home/usernamee verifique se o novo local pertence a username:

# cp -p /home/username /extra-home/
# chown username:username /extra-home/username

Mova o /home/username/diretório original para um local seguro:

# mv /home/username /root/

Crie o link simbólico:

# ln -s /extra-home/username /home/username

Verifique se está funcionando conforme o esperado, abrindo outra janela do terminal e executando su:

$ sudo su username

Se tudo parecer bom, pelo menos a partir do terminal (o conteúdo é /home/username/exibido conforme o esperado), efetue logout e logon novamente (suponho que você esteja na área de trabalho do Ubuntu) e deve estar funcionando normalmente. No entanto, se não estiver, basta excluir o link simbólico e mover a pasta inicial arquivada de volta ao seu local original.

Paulo
fonte