як я можу символізувати домашню папку з іншого диска?


15

Більш конкретно, я хочу мати в папці користувача для свого домашнього облікового запису інший диск, який має більше місця, але зберігати інші менші облікові записи в моєму ssd. Мені вдалося скопіювати свою папку користувача на інший диск, але тепер мені потрібно пов’язати її з домашньою папкою на моєму ssd, я хочу, щоб вона була доступною у звичайному завантаженні, і, будь ласка, не кажіть мені, що те, що я робив, не було найкраще, я просто хочу відповіді. Як змусити його створити посилання, яке переходить від / home / username до / extra-home / username і розпізнається системою при завантаженні папок користувача?

Відповіді:


21

Пам'ятайте, що ваші дозволи повинні бути однаковими. На додаток до символьного посилання на останніх дистрибутивах та файлових системах як root ви також можете використовувати bind-mount:

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

Це корисно для дозволу доступу "через" каталог / home до підкаталів через демон, які іншим чином налаштовані, щоб уникнути проходження через символьні посилання (apache, ftpd тощо).

Ви, звичайно, повинні пам'ятати (або сценарій init), щоб прив'язати при перезапуску, звичайно.


Я не знав, що посилання можуть створювати такі проблеми. Як ставляться до таких демонів /var/run/?
Павло

1
Сервери призначені для обмеження доступу до локальної файлової системи, щоб уникнути компрометування системи. Ви можете подумати про це як "речі, дозволені віддаленим користувачам". Їм не потрібно обмежувати доступ / var / run (як правило, при запуску / вимкненні), як "речі, дозволені до цього процесу". Див. Директиву FollowSymLinks Apache для прикладу того, як дозволити обслуговуваній файловій системі переходити посилання, якщо потрібно.
Джо Атцбергер

Чи можемо ми також розширити / bin та / lib таким же чином (може бути корисним у невеликій файловій системі)?
ransh

Потрібна ваша система /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), і це повинно працювати нормально. Однак, якщо це не так, просто видаліть символьне посилання та перенесіть заархівовану домашню папку назад у початкове місце.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.