ฉันจะเชื่อมโยงโฟลเดอร์บ้านของฉันกับไดรฟ์อื่นได้อย่างไร


15

โดยเฉพาะอย่างยิ่งฉันต้องการมีโฟลเดอร์ผู้ใช้สำหรับบัญชีที่บ้านของฉันดิสก์อื่นที่มีพื้นที่เพิ่มขึ้น แต่เก็บบัญชีขนาดเล็กอื่น ๆ ของฉันใน ssd ของฉัน ฉันสามารถคัดลอกโฟลเดอร์ผู้ใช้ของฉันไปยังดิสก์อื่น แต่ตอนนี้ฉันต้องการเชื่อมโยงไปยังโฟลเดอร์บ้านใน ssd ของฉันฉันต้องการให้มันสามารถเข้าถึงได้จากการบูตปกติและโปรดอย่าบอกฉันว่าสิ่งที่ฉันทำไม่ใช่ สิ่งที่ดีที่สุดฉันแค่ต้องการคำตอบ ฉันจะสร้างลิงก์ที่เริ่มต้นจาก / home / ชื่อผู้ใช้ไปยัง / extra-home / ชื่อผู้ใช้และระบบได้รับการยอมรับเมื่อโหลดโฟลเดอร์ผู้ใช้?

คำตอบ:


21

โปรดจำไว้ว่าการอนุญาตของคุณจะต้องเหมือนกัน นอกเหนือจาก symlink แล้วใน distros และระบบไฟล์ล่าสุดเนื่องจาก root คุณสามารถใช้ bind-mount:

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

สิ่งนี้มีประโยชน์สำหรับการอนุญาตให้เข้าถึง "ผ่าน" ไดเรกทอรี / home เพื่อย่อยผ่าน daemons ที่ถูกกำหนดค่าไว้เพื่อหลีกเลี่ยงการทำเส้นทางผ่าน symlink (apache, ftpd, ฯลฯ )

คุณต้องจำ (หรือสคริปต์เริ่มต้น) เพื่อผูกเมื่อเริ่มใหม่แน่นอน


ฉันไม่ทราบว่า symlink สามารถสร้างปัญหาดังกล่าวได้ ภูตดังกล่าวรักษา/var/run/อย่างไร
Paul

1
เซิร์ฟเวอร์ได้รับการออกแบบมาเพื่อ จำกัด การเข้าถึงระบบไฟล์ในเครื่องเพื่อหลีกเลี่ยงการทำอันตรายต่อระบบ คุณสามารถคิดว่าสิ่งนี้เป็น "สิ่งที่อนุญาตให้ผู้ใช้ระยะไกล" พวกเขาไม่จำเป็นต้อง จำกัด ตัวเองจากการเข้าถึง / var / run (โดยทั่วไปเมื่อเริ่มต้น / ปิด) เป็น "สิ่งที่อนุญาตให้กระบวนการนี้" ดูคำสั่ง FollowSymLinks ของ Apache สำหรับตัวอย่างของวิธีการอนุญาตให้ระบบไฟล์ที่ให้บริการเพื่อสำรวจ symlink ถ้าต้องการ
Joe Atzberger

เราสามารถขยาย / bin และ / lib ด้วยวิธีเดียวกันได้หรือไม่ (มีประโยชน์ในระบบไฟล์ขนาดเล็ก)
ransh

ระบบของคุณต้องการ/binและ/libตอนเริ่มต้น (เช่นก่อนที่คุณจะสามารถเรียกใช้mountคำสั่ง) ได้หรือไม่? ถ้าเป็นเช่นนั้นคุณไม่สามารถใช้กลยุทธ์นี้
Joe Atzberger

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

ตามคำถามนี้สำหรับผู้ใช้ขั้นสูงเป็นไปได้

คุณสามารถสร้างลิงค์สัญลักษณ์โดยใช้:

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

หากวิธีนี้ใช้ไม่ได้ด้วยเหตุผลเพียงแค่คุณลบลิงก์สัญลักษณ์ให้ย้ายไดเรคทอรี่กลับและรีบูตคอมพิวเตอร์ของคุณ


ถ้ามันเป็นโฟลเดอร์ง่าย ๆ คุณต้องเริ่มต้นด้วย / media / {hardrive_name} / {โฟลเดอร์ของคุณ} ฉันเพิ่งลองใช้มันบนเซิร์ฟเวอร์ debian และใช้งานได้
answerSeeker

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/

สร้าง symlink:

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

ตรวจสอบว่าทำงานได้ตามที่คาดไว้โดยเปิดหน้าต่างเทอร์มินัลอื่นแล้วเปิดใช้งานsu:

$ sudo su username

หากทุกอย่างดูดีอย่างน้อยจากเทอร์มินัล (เนื้อหาของ/home/username/ปรากฏตามที่คาดไว้) จากนั้นออกจากระบบและเข้าสู่ระบบอีกครั้ง (ฉันสมมติว่าคุณอยู่บนเดสก์ท็อป Ubuntu) และควรทำงานได้ตามปกติ อย่างไรก็ตามหากไม่มีให้ลบ symlink และย้ายโฟลเดอร์หลักที่เก็บถาวรกลับไปที่ตำแหน่งเดิม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.