Làm thế nào tôi có thể symlink thư mục nhà của tôi từ một ổ đĩa khác?


15

Cụ thể hơn, tôi muốn có thư mục người dùng cho tài khoản nhà của mình một đĩa khác có nhiều dung lượng hơn, nhưng giữ các tài khoản nhỏ hơn khác trên ssd của tôi. Tôi đã có thể sao chép thư mục người dùng của mình sang một đĩa khác, nhưng bây giờ tôi cần liên kết nó với thư mục nhà trên ssd của mình, tôi muốn nó có thể truy cập được từ một khởi động bình thường, và xin đừng nói với tôi rằng những gì tôi đã làm không phải là Điều tốt nhất, tôi chỉ muốn một câu trả lời. Làm cách nào để tôi có được nó để tạo một liên kết đi từ / home / tên người dùng đến / thêm nhà / tên người dùng và được hệ thống nhận ra khi tải các thư mục người dùng?

Câu trả lời:


20

Hãy nhớ rằng quyền của bạn sẽ cần phải giống nhau. Ngoài symlink, trên các distro và hệ thống tập tin gần đây, với quyền root, bạn cũng có thể sử dụng bind-mount:

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

Điều này rất hữu ích để cho phép truy cập "thông qua" thư mục / home tới các thư mục con thông qua trình nền được cấu hình theo cách khác để tránh đường dẫn qua các liên kết tượng trưng (apache, ftpd, v.v.).

Tất nhiên, bạn phải nhớ (hoặc init script) để liên kết khi khởi động lại.


Tôi đã không biết rằng các liên kết tượng trưng có thể tạo ra các vấn đề như vậy. Làm thế nào để daemon như vậy đối xử /var/run/?
Paul

1
Các máy chủ được thiết kế để hạn chế quyền truy cập vào hệ thống tệp cục bộ, để tránh ảnh hưởng đến hệ thống. Bạn có thể coi đây là "những thứ được phép cho người dùng từ xa". Họ không cần hạn chế truy cập / var / run (thường là lúc khởi động / tắt máy) là "những thứ được phép cho quy trình này". Xem chỉ thị FollowSymLinks của Apache để biết ví dụ về cách cho phép hệ thống tệp được phân phát đi qua các liên kết tượng trưng, ​​nếu muốn.
Joe Atzberger

chúng ta cũng có thể mở rộng / bin và / lib theo cùng một cách (có thể hữu ích trong hệ thống tập tin nhỏ) không?
chuộc

Hệ thống của bạn có cần /bin/liblúc khởi tạo (tức là trước khi bạn có thể chạy mountlệnh) không? Nếu vậy, thì bạn không thể sử dụng chiến lược này.
Joe Atzberger

2
Thêm thông tin ở đây, vì tôi phải tìm kiếm nó, một khi đã xong thì thêm init vào / etc / fstab ở đây là biểu mẫu. Khi sử dụng phương pháp Joe mô tả mount --bind --verbose /extra-home/username /home/username, dòng trong /etc/fstabsẽ là/extra-home/username /home/username none defaults,bind 0 0
Wilken

9

Theo câu hỏi này trên Super User, điều này là có thể.

Bạn có thể tạo một liên kết tượng trưng bằng cách sử dụng:

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

Nếu nó không hoạt động vì một số lý do bạn chỉ có thể xóa liên kết tượng trưng, ​​di chuyển thư mục trở lại và khởi động lại máy tính của bạn.


Nếu đó là một thư mục đơn giản, bạn phải bắt đầu với / media / {hardrive_name} / {thư mục của bạn} Tôi vừa thử cái này trên một máy chủ debian và nó hoạt động.
answerSeeker

2

Tôi sẽ thử điều này:

Trong khi đăng nhập như một người dùng khác, trong vỏ gốc (ví dụ sudo -i), sao chép nội dung của /home/usernameđến /extra-home/usernamevà đảm bảo vị trí mới được sở hữu bởi username:

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

Di chuyển /home/username/thư mục gốc đến nơi an toàn:

# mv /home/username /root/

Tạo liên kết tượng trưng:

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

Xác minh nó hoạt động như mong đợi bằng cách mở một cửa sổ đầu cuối khác và chạy su:

$ sudo su username

Nếu mọi thứ đều ổn, ít nhất là từ thiết bị đầu cuối (nội dung /home/username/xuất hiện như mong đợi), sau đó đăng xuất và đăng nhập lại (tôi giả sử bạn đang ở trên máy tính để bàn Ubuntu) và nó sẽ hoạt động bình thường. Tuy nhiên, nếu không, chỉ cần xóa liên kết tượng trưng và di chuyển thư mục nhà đã lưu trữ trở lại vị trí ban đầu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.