bagaimana saya bisa menghubungkan folder rumah saya dari drive lain?

15

Lebih khusus, saya ingin memiliki folder pengguna untuk akun rumah saya disk lain yang memiliki lebih banyak ruang, tetapi menyimpan akun saya yang lebih kecil lainnya di SSD saya. Saya dapat menyalin folder pengguna saya ke disk lain, tetapi sekarang saya harus menautkannya ke folder rumah di SSD saya, saya ingin itu dapat diakses dari boot normal, dan tolong jangan bilang bahwa apa yang saya lakukan bukan hal terbaik, saya hanya ingin jawaban. Bagaimana cara mendapatkannya untuk membuat tautan dari / home / nama pengguna ke / extra-home / nama pengguna dan dikenali oleh sistem saat memuat folder pengguna?

sbergeron
sumber

Jawaban:

20

Ingatlah bahwa izin Anda harus sama. Selain symlink, pada distro dan sistem file yang lebih baru, sebagai root Anda juga dapat menggunakan bind-mount:

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

Ini berguna untuk memungkinkan akses "melalui" direktori / home ke subdir melalui daemon yang jika tidak dikonfigurasi untuk menghindari pathing melalui symlinks (apache, ftpd, dll.).

Anda harus ingat (atau skrip init) untuk mengikat pada restart, tentu saja.

Joe Atzberger
sumber
Saya tidak tahu bahwa symlink dapat membuat masalah seperti itu. Bagaimana perawatan daemon semacam itu /var/run/?
Paul
1
Server dirancang untuk membatasi akses ke sistem file lokal, untuk menghindari kompromi sistem. Anda dapat menganggap ini sebagai "hal-hal yang diizinkan untuk pengguna jarak jauh". Mereka tidak perlu membatasi diri untuk mengakses / var / run (biasanya pada saat startup / shutdown) sebagai "hal-hal yang diperbolehkan untuk proses ini". Lihat direktif FollowSymLinks Apache untuk contoh bagaimana mengizinkan sistem file yang dilayani untuk melintasi symlink, jika diinginkan.
Joe Atzberger
dapatkah kita juga memperluas / bin dan / lib dengan cara yang sama (dapat berguna dalam sistem file kecil)?
ransh
Apakah sistem Anda perlu /bindan /libinisialisasi (yaitu sebelum Anda dapat menjalankan mountperintah)? Jika demikian, maka Anda tidak dapat menggunakan strategi ini.
Joe Atzberger
2
Menambahkan info di sini, karena saya harus mencarinya, setelah selesai menambahkan init di / etc / fstab di sini adalah form. Saat menggunakan metode yang dijelaskan Joe mount --bind --verbose /extra-home/username /home/username, baris masuk /etc/fstabadalah/extra-home/username /home/username none defaults,bind 0 0
Wilken
9

Menurut ini pertanyaan pada Super User ini mungkin.

Anda dapat membuat tautan simbolis menggunakan:

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

Jika itu tidak berhasil karena suatu alasan Anda bisa menghapus tautan simbolik, pindahkan direktori kembali dan reboot komputer Anda.

Louis Matthijssen
sumber
Jika itu folder sederhana, Anda harus mulai dengan / media / {hardrive_name} / {folder Anda} Saya baru saja mencoba ini di server debian dan berfungsi.
answerSeeker
2

Saya akan mencoba ini:

Saat masuk sebagai pengguna yang berbeda, di shell root (mis. sudo -i), Salin konten /home/usernameke /extra-home/usernamedan pastikan lokasi baru dimiliki oleh username:

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

Pindahkan /home/username/direktori asli ke tempat yang aman:

# mv /home/username /root/

Buat symlink:

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

Verifikasi itu berfungsi seperti yang diharapkan dengan membuka jendela terminal lain dan menjalankan su:

$ sudo su username

Jika semuanya terlihat baik, paling tidak dari terminal (konten /home/username/muncul seperti yang diharapkan), kemudian logout dan masuk kembali (saya berasumsi Anda berada di desktop Ubuntu) dan itu seharusnya bekerja secara normal. Namun, jika tidak, hapus saja symlink dan pindahkan folder home yang diarsipkan kembali ke lokasi semula.

Paul
sumber