jak mogę dowiązać symbolicznie mój folder domowy z innego dysku?

15

Mówiąc dokładniej, chcę, aby folder użytkownika dla mojego konta domowego był innym dyskiem, który ma więcej miejsca, ale zachowuję inne mniejsze konta na moim ssd. Byłem w stanie skopiować mój folder użytkownika na inny dysk, ale teraz muszę połączyć go z folderem domowym na moim dysku SSD, chcę, aby był dostępny z normalnego rozruchu i nie mów mi, że to, co zrobiłem, nie było najlepsze, chcę tylko odpowiedź. Jak mogę uzyskać link, który przechodzi z / home / nazwa użytkownika do / extra-home / nazwa użytkownika i jest rozpoznawany przez system podczas ładowania folderów użytkowników?

sbergeron
źródło

Odpowiedzi:

21

Pamiętaj, że twoje uprawnienia będą musiały być takie same. Oprócz dowiązania symbolicznego, w nowszych dystrybucjach i systemach plików, jako root możesz również użyć bind-mount:

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

Jest to przydatne, aby umożliwić dostęp „przez” katalog / home do podkatalogów za pośrednictwem demonów, które w innym przypadku są skonfigurowane tak, aby uniknąć przeszukiwania dowiązań symbolicznych (apache, ftpd itp.).

Oczywiście musisz pamiętać (lub skrypt inicjujący), aby powiązać się przy ponownym uruchomieniu.

Joe Atzberger
źródło
Nie wiedziałem, że dowiązania symboliczne mogą powodować takie problemy. Jak traktują takie demony /var/run/?
Paul
1
Serwery mają na celu ograniczenie dostępu do lokalnego systemu plików, aby uniknąć naruszenia systemu. Możesz myśleć o tym jako o „rzeczach zdalnych dla użytkowników”. Nie muszą się ograniczać dostępu do / var / run (zazwyczaj podczas uruchamiania / zamykania) jako „rzeczy dozwolone dla tego procesu”. Zobacz dyrektywę FollowSymLinks firmy Apache, aby uzyskać przykład, jak zezwolić obsługiwanemu systemowi plików na przechodzenie do dowiązań symbolicznych, jeśli jest to pożądane.
Joe Atzberger
czy możemy również rozszerzyć / bin i / lib w ten sam sposób (może być przydatny w małym systemie plików)?
ransh
Czy twój system potrzebuje /bini /libprzy inicjalizacji (tj. Zanim będziesz mógł uruchomić mountpolecenie)? Jeśli tak, to nie możesz zastosować tej strategii.
Joe Atzberger
2
Dodanie informacji tutaj, ponieważ musiałem ją wyszukać, po zakończeniu dodawania init w / etc / fstab tutaj jest formularz. Gdy użyjesz opisanej metody Joe mount --bind --verbose /extra-home/username /home/username, wierszem /etc/fstabbędzie/extra-home/username /home/username none defaults,bind 0 0
Wilken
9

Zgodnie z tym pytaniem dotyczącym superużytkownika jest to możliwe.

Możesz utworzyć dowiązanie symboliczne, używając:

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

Jeśli z jakiegoś powodu nie działa, możesz po prostu usunąć dowiązanie symboliczne, przenieść katalog z powrotem i ponownie uruchomić komputer.

Louis Matthijssen
źródło
Jeśli jest to prosty folder, musisz zacząć od / media / {hardrive_name} / {your folder} Właśnie próbowałem tego na serwerze debian i działa.
answerSeeker
2

Spróbowałbym tego:

Gdy jesteś zalogowany jako inny użytkownik, w powłoce głównej (np. sudo -i) Skopiuj zawartość /home/usernamedo /extra-home/usernamei upewnij się, że nowa lokalizacja jest własnością username:

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

Przenieś oryginalny /home/username/katalog w bezpieczne miejsce:

# mv /home/username /root/

Utwórz dowiązanie symboliczne:

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

Sprawdź, czy działa zgodnie z oczekiwaniami, otwierając inne okno terminala i uruchamiając su:

$ sudo su username

Jeśli wszystko wygląda dobrze, przynajmniej z terminala (zawartość /home/username/wygląda zgodnie z oczekiwaniami), to wyloguj się i zaloguj ponownie (zakładam, że jesteś na Ubuntu) i powinno działać normalnie. Jeśli nie jest, po prostu usuń dowiązanie symboliczne i przenieś zarchiwizowany folder domowy z powrotem do pierwotnej lokalizacji.

Paweł
źródło