Как я могу символическую ссылку моей домашней папки с другого диска?

15

Точнее говоря, я хочу, чтобы папка пользователя для моей домашней учетной записи была на другом диске, на котором было бы больше места, но мои другие меньшие учетные записи оставались на моем ssd. Я смог скопировать свою папку пользователя на другой диск, но теперь мне нужно связать ее с домашней папкой на моем ssd, я хочу, чтобы она была доступна при обычной загрузке, и, пожалуйста, не говорите мне, что я не Лучше всего, я просто хочу получить ответ. Как получить это, чтобы создать ссылку, которая идет от / home / username к / extra-home / username и распознается системой при загрузке пользовательских папок?

sbergeron
источник

Ответы:

21

Помните, что ваши разрешения должны быть одинаковыми. В дополнение к symlink, в более свежих дистрибутивах и файловых системах в качестве root вы также можете использовать bind-mount:

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

Это полезно для предоставления доступа «через» каталог / home к подкаталогам через демоны, которые в противном случае настроены так, чтобы избежать прохождения по символическим ссылкам (apache, ftpd и т. Д.).

Вы должны помнить (или сценарий инициализации), чтобы связать при перезагрузках, конечно.

Джо Ацбергер
источник
Я не знал, что символические ссылки могут создать такие проблемы. Как лечат таких демонов /var/run/?
Пол
1
Серверы предназначены для ограничения доступа к локальной файловой системе, чтобы избежать компрометации системы. Вы можете думать об этом как о «вещах, разрешенных удаленным пользователям». Они не должны ограничивать себя в доступе к / var / run (обычно при запуске / завершении работы) как "вещи, разрешенные для этого процесса". См. Директиву Apache FollowSymLinks для примера того, как разрешить обслуживаемой файловой системе проходить символические ссылки, если это необходимо.
Джо Ацбергер
мы можем также расширить / bin и / lib таким же образом (может быть полезно в небольшой файловой системе)?
18:25
Нужна ли ваша система /binи /libпри инициализации (т.е. до того, как вы сможете запустить mountкоманду)? Если это так, то вы не можете использовать эту стратегию.
Джо Ацбергер
2
Добавление информации здесь, как я должен был искать, когда это сделано для добавления init в / etc / fstab, вот форма. При использовании метода , описанного Джо mount --bind --verbose /extra-home/username /home/username, линия в /etc/fstabбудет/extra-home/username /home/username none defaults,bind 0 0
Уилкен
9

Согласно этому вопросу на Super User это возможно.

Вы можете создать символическую ссылку, используя:

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

Если по какой-то причине это не работает, вы можете просто удалить символическую ссылку, переместить каталог назад и перезагрузить компьютер.

Луи Матейссен
источник
Если это простая папка, вы должны начать с / media / {hardrive_name} / {ваша папка} Я только что попробовал это на сервере Debian, и он работает.
Ответ Искатель
2

Я бы попробовал это:

Когда вы вошли в систему как другой пользователь, в корневой оболочке (например sudo -i) скопируйте содержимое /home/usernameв /extra-home/usernameи убедитесь, что новое местоположение принадлежит username:

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

Переместите исходный /home/username/каталог в безопасное место:

# mv /home/username /root/

Создайте символическую ссылку:

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

Убедитесь, что он работает должным образом, открыв другое окно терминала и запустив su:

$ sudo su username

Если все выглядит хорошо, по крайней мере, из терминала (содержимое /home/username/отображается так, как ожидается), выйдите из системы и снова войдите в систему (я предполагаю, что вы работаете на рабочем столе Ubuntu), и она должна работать нормально. Однако, если это не так, просто удалите символическую ссылку и переместите заархивированную домашнюю папку обратно в исходное местоположение.

Павел
источник