การแจกจ่ายเป็นเซิร์ฟเวอร์ Ubuntu ที่ใช้เคอร์เนล 2.6.35-30
ฉันต้องการไดเรกทอรีที่อยู่ในหน่วยความจำอย่างสมบูรณ์ เป็นไปได้หรือไม่หากไม่มีสิทธิ์รูท
การแจกจ่ายเป็นเซิร์ฟเวอร์ Ubuntu ที่ใช้เคอร์เนล 2.6.35-30
ฉันต้องการไดเรกทอรีที่อยู่ในหน่วยความจำอย่างสมบูรณ์ เป็นไปได้หรือไม่หากไม่มีสิทธิ์รูท
คำตอบ:
ลินุกซ์ยังมีอุปกรณ์ tmpfs /dev/shm
ซึ่งผู้ใช้สามารถใช้งานได้ มันไม่ได้เมานต์ไปยังไดเรกทอรีที่ระบุโดยค่าเริ่มต้น แต่คุณยังสามารถใช้มันเป็นหนึ่งเดียว
เพียงสร้างไดเรกทอรี/dev/shm
จากนั้นเชื่อมโยงไปยังทุกที่ที่คุณต้องการ คุณสามารถให้สิทธิ์สร้างไดเรกทอรีใด ๆ ที่คุณเลือกเพื่อให้ผู้ใช้รายอื่นไม่สามารถเข้าถึงได้
นี่คืออุปกรณ์ที่สำรอง RAM ดังนั้นสิ่งที่มีอยู่ในหน่วยความจำโดยค่าเริ่มต้น คุณสามารถสร้างไดเรกทอรีใด ๆ ที่คุณต้องการภายใน/dev/shm
โดยปกติแล้วไฟล์ที่วางไว้ที่นี่จะไม่สามารถรีบูตได้และหากเครื่องของคุณเริ่มทำการแลกเปลี่ยน/dev/shm
จะไม่ช่วยคุณ
โซลาริขนานไปกับการ/dev/shm
มีที่/tmp
ซึ่งเป็น "แลกเปลี่ยน" พาร์ทิชันชนิดและยังหน่วยความจำตาม เช่นเดียวกับ/dev/shm
ผู้ใช้เองอาจสร้างไฟล์ใน/tmp
บน Solaris
OpenBSD มีความสามารถในการใช้หน่วยความจำที่ยึดตามเช่นกัน แต่ไม่มีค่าเริ่มต้นให้ใช้งาน คำสั่ง mount_mfs นั้นไม่มีประโยชน์สำหรับผู้ใช้ขั้นสูง
ฉันไม่แน่ใจเกี่ยวกับ * BSD อื่น
/dev/tmpfs
ในระบบ (ไม่มีระบบของตัวเองซึ่งมีเคอร์เนล 3.0.0) คุณแน่ใจหรือว่าไม่ใช่สิ่งที่สร้างขึ้นโดยการแจกจ่ายของคุณ
/run
และอาจ/run/shm
ต้องตรวจสอบเพิ่มเติมก่อนที่จะอัปเดตคำตอบของฉัน
... ในระบบที่มีการสลับที่ใช้งานอยู่! มีโอกาสสูงที่คอมพิวเตอร์ของคุณเปิดใช้งาน
มีที่ดีกว่าคือการรักษาความปลอดภัยทางเลือกมาตรฐาน ramfs
- คุณอาจต้องการใช้ramfs
ถ้าคุณวางแผนที่จะใช้ RAM ที่สำรองไว้เพื่อเก็บข้อมูลสำคัญชั่วคราวเช่นกุญแจส่วนตัว Bitcoin หรือกระเป๋าเงิน Ethereum และอื่น ๆ
ramfs
ดีกว่าtmpfs
เมื่อคำนึงถึงความปลอดภัยเนื่องจากramfs
ข้อมูลไม่เคยถูกเปลี่ยน (บันทึกไปยังไดรฟ์จัดเก็บข้อมูลจริง) ในขณะที่tmpfs
อาจถูกเปลี่ยน บุคคลที่สามสามารถตรวจสอบพื้นที่สว็อปและดึงข้อมูลที่ละเอียดอ่อนได้
คุณสามารถเตรียมramfs
เมาท์เพื่อให้ผู้ใช้ที่ไม่มีสิทธิพิเศษสามารถเมานต์ / เลิกเมานต์ได้ตามต้องการ
การทำเช่นนี้คุณจะต้องรากสิทธิ์ครั้งเดียว ขอให้ผู้ดูแลระบบของคุณตั้งค่าให้คุณหากคุณไม่มีสิทธิ์รูท
/etc/fstab
ในตอนแรกคุณต้องเพิ่มเส้นไปยัง บรรทัดใน fstab อาจมีลักษณะเช่นนี้:
none /mnt/ramfs ramfs noauto,user,size=1024M,mode=0770 0 0
/mnt/ramfs
เป็นจุดเมานท์ซึ่งระบบไฟล์ ramfs จะถูกเมาท์ ไดเรกทอรีควรมีอยู่noauto
ตัวเลือกนี้จะป้องกันไม่ให้ติดตั้งโดยอัตโนมัติ (เช่นเมื่อบูตเครื่องขึ้น)user
ทำให้สามารถตั้งค่านี้ได้โดยผู้ใช้ปกติsize
กำหนดขนาด "ramdisk" นี้ (คุณสามารถใช้M
และG
ที่นี่)mode
มีความสำคัญมากด้วยรหัสฐานแปด0770
เท่านั้นที่รูทและผู้ใช้ซึ่งติดตั้งระบบไฟล์นี้จะสามารถอ่านและเขียนได้ไม่ใช่อื่น ๆ (คุณสามารถใช้รหัสที่แตกต่างกันตามที่คุณเลือกได้ แต่ต้องแน่ใจด้วย! )เมื่อดำเนินการเสร็จแล้วผู้ใช้จะสามารถติดตั้งได้ตามต้องการ
เมื่อบางม้าผู้ใช้นี้ใหม่ 1024 MB ระบบแฟ้มถูกสร้างขึ้นและติดตั้งที่ramfs
มันจะเป็นของ/mnt/ramfs/
root:user
เมื่อเขา / เธอ unmounts มันหรือระบบได้รับการรีบูตนี้ระบบแฟ้ม RAM-based จะหายไปกับทุกข้อมูล อันไหนเท่ห์
นอกจากนี้ระบบไฟล์นี้สามารถติดตั้งโดยผู้ใช้หลายคนได้อย่างอิสระ แต่ไม่พร้อมกันนั่นคือเพื่อให้พร้อมสำหรับการติดตั้งโดยผู้ใช้คนต่อไปผู้ใช้ก่อนหน้านี้ควร unmount ระบบไฟล์นี้
เพื่อเมานต์:
mount /mnt/ramfs/
เป็น unmount:
umount /mnt/ramfs/
ป.ล. หากคุณกำลังพยายามที่จะrsync
ไฟล์ไปยังรากของ ramfs ที่ติดตั้ง / สร้างขึ้นใหม่ในฐานะผู้ใช้ที่ไม่ใช่รูทคุณอาจพบrsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
ข้อผิดพลาด นี่เป็นสิ่งที่ดีและคาดหวังเพราะผู้ใช้ของคุณไม่ได้เป็นเจ้าของรูทของระบบไฟล์ ram การแก้ปัญหานั้นง่ายเพียงแค่สร้างไดเรกทอรีบางอย่างที่นั่น/mnt/ramfs/copied/
และrsync
ในนั้น
PPS ทดสอบบน Debian 9. ค่อนข้างแน่ใจว่ามันจะทำงานบน Ubuntu ได้เช่นกัน
ระบบของคุณอาจมีอยู่แล้ว ระบบ Linux ล่าสุดที่ใช้ Glibc จะติดตั้ง tmpfs ไว้/dev/shm
เสมอ
หากระบบของคุณไม่ได้มีหนึ่งหรือมันมีขนาดเล็กเกินไปแล้วระบบแฟ้มไม่ได้ติดตั้งโดย root หมายถึงสวยมากFUSE บน Ubuntu คุณต้องอยู่ในfuse
กลุ่มเพื่อใช้ FUSE เมื่อมองดูระบบไฟล์ FUSE ที่มีอยู่ฉันเห็นเฉพาะRamfuseซึ่งน่าเสียดายที่ถูกปล่อยปละละเลย
โดยทั่วไปไม่สามารถติดตั้งระบบไฟล์โดยรูทเท่านั้น หากคุณอนุญาตให้ผู้ใช้วางระบบไฟล์ตามอำเภอใจนั่นเป็นหลักให้พวกเขารูท (วิธีที่ง่าย: ติดหนึ่งตัว / etc ใส่รหัสผ่านของคุณเองและเงาที่นั่นเช่นเดียวกับรหัสผ่านรูทใหม่ที่คุณเพิ่งสร้างขึ้น unmount)
หากคุณต้องการ tmpfs ในสถานที่เฉพาะคุณสามารถเพิ่มเข้าไป/etc/fstab
ได้ด้วยธงของnoauto,user
แล้วผู้ใช้จะสามารถเมานได้ (แต่ไม่ชัดเจนโดยเฉพาะอย่างยิ่งว่าทำไมคุณไม่เพียงติดตั้งอัตโนมัติ)
หากผู้ใช้ต้องการ tmpfs โดยพลการคุณมีตัวเลือกสองสามอย่าง:
sudo
เพื่ออนุญาตให้ผู้ใช้เรียกใช้ ตรวจสอบให้แน่ใจว่าคุณไม่อนุญาตให้ผู้ใช้เลือกเส้นทางโดยพลการ