Câu trả lời:
Linux cung cấp một thiết bị tmpfs mà bất kỳ người dùng nào cũng có thể sử dụng /dev/shm
. Nó không được gắn vào một thư mục cụ thể theo mặc định, nhưng bạn vẫn có thể sử dụng nó như một thư mục.
Đơn giản chỉ cần tạo một thư mục trong /dev/shm
và sau đó symlink nó đến bất cứ nơi nào bạn muốn. Bạn có thể cung cấp cho thư mục đã tạo bất kỳ quyền nào bạn chọn để người dùng khác không thể truy cập.
Đây là một thiết bị được hỗ trợ RAM, vì vậy những gì có trong bộ nhớ theo mặc định. Bạn có thể tạo bất kỳ thư mục bạn cần bên trong/dev/shm
Đương nhiên, các tệp được đặt ở đây sẽ không tồn tại khi khởi động lại và nếu máy của bạn bắt đầu hoán đổi, /dev/shm
sẽ không giúp bạn.
Song song Solaris /dev/shm
là /tmp
phân vùng kiểu "hoán đổi" và cũng dựa trên bộ nhớ. Cũng như /dev/shm
, người dùng tùy ý có thể tạo các tệp trong /tmp
Solaris.
OpenBSD cũng có khả năng sử dụng ngàm dựa trên bộ nhớ, nhưng không có sẵn một mặc định. Lệnh mount_mfs có sẵn cho siêu người dùng.
Tôi không chắc chắn về các BSD * khác.
/dev/tmpfs
trên hệ thống (hệ thống của tôi cũng không có kernel 3.0.0). Bạn có chắc chắn đó không phải là thứ được tạo ra bởi bản phân phối của bạn?
/run
và có thể /run/shm
Cần điều tra thêm trước khi cập nhật câu trả lời của tôi.
... Trên các hệ thống có trao đổi hoạt động ! Rất có thể là rất cao máy tính của bạn có nó được kích hoạt.
Có một sự thay thế tốt hơn, an toàn , tiêu chuẩn - ramfs
. Bạn có thể muốn sử dụng ramfs
nếu bạn có kế hoạch sử dụng không gian được hỗ trợ RAM để lưu trữ tạm thời dữ liệu nhạy cảm, chẳng hạn như khóa riêng, ví Bitcoin hoặc Ethereum, v.v.
ramfs
tốt hơn so với tmpfs
khi bảo mật được quan tâm, vì ramfs
dữ liệu không bao giờ bị tráo đổi (được lưu vào ổ lưu trữ vật lý), trong khi tmpfs
có thể bị tráo đổi. Các bên thứ ba sau đó có thể kiểm tra không gian hoán đổi và trích xuất dữ liệu nhạy cảm .
Bạn có thể chuẩn bị ramfs
gắn kết để bất kỳ người dùng không có đặc quyền nào cũng có thể gắn kết / ngắt kết nối theo yêu cầu.
Để làm điều này, bạn sẽ cần đặc quyền root , một lần . Yêu cầu quản trị viên hệ thống của bạn thiết lập điều này cho bạn, nếu bạn thiếu quyền root.
Đầu tiên, bạn cần thêm một dòng vào /etc/fstab
. Dòng trong fstab có thể trông như thế này:
none /mnt/ramfs ramfs noauto,user,size=1024M,mode=0770 0 0
/mnt/ramfs
là một điểm gắn kết, nơi hệ thống tập tin ramfs sẽ được gắn kết. Thư mục nên tồn tại.noauto
tùy chọn ngăn không cho điều này được gắn tự động (ví dụ: khi khởi động hệ thống).user
làm cho nó có thể gắn kết bởi người dùng thường xuyên.size
đặt kích thước "ramdisk" này (bạn có thể sử dụng M
và G
tại đây).mode
là rất quan trọng , với mã bát phân 0770
chỉ có root và người dùng, người đã gắn hệ thống tập tin này, sẽ có thể đọc và ghi vào nó, chứ không phải những người khác (bạn cũng có thể sử dụng mã khác theo lựa chọn của mình, nhưng hãy chắc chắn về nó! ).Khi điều này được thực hiện, bất kỳ người dùng sẽ có thể gắn kết này theo yêu cầu.
Khi một số người dùng gắn kết điều này, ramfs
hệ thống tệp 1024 MB mới được tạo và gắn kết tại /mnt/ramfs/
. Nó sẽ được sở hữu bởi root:user
. Khi anh ấy / cô ấy ngắt kết nối hoặc hệ thống được khởi động lại, hệ thống tập tin dựa trên RAM này sẽ biến mất với tất cả dữ liệu của nó. Cái nào cũng ngầu.
Ngoài ra, hệ thống tệp này có thể được gắn kết bởi một số người dùng một cách độc lập, nhưng không phải cùng một lúc , tức là để sẵn sàng để gắn kết bởi người dùng tiếp theo, người dùng trước nên ngắt kết nối hệ thống tệp này.
tăng:
mount /mnt/ramfs/
để ngắt kết nối:
umount /mnt/ramfs/
PS Nếu bạn đang cố gắng rsync
tập tin vào thư mục gốc của ramfs mới được gắn / tạo như một người dùng không root, bạn có thể gặp phải một rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
lỗi. Điều này là hoàn toàn tốt và được mong đợi, bởi vì người dùng của bạn không sở hữu gốc của hệ thống tập tin ram. Giải pháp rất đơn giản, chỉ cần tạo một số thư mục ở đó, /mnt/ramfs/copied/
ví dụ, và rsync
vào đó.
PPS đã thử nghiệm trên Debian 9. Khá chắc chắn rằng nó cũng sẽ hoạt động trên Ubuntu.
Hệ thống của bạn có thể đã có sẵn một cái; các hệ thống Linux gần đây dựa trên Glibc luôn có một tmpfs được gắn vào/dev/shm
.
Nếu hệ thống của bạn không có một cái hoặc nó quá nhỏ, thì một hệ thống tập tin không được root bởi root khá nhiều có nghĩa là FUSE . Trên Ubuntu, bạn cần phải ở trong fuse
nhóm để sử dụng FUSE. Nhìn qua các hệ thống tập tin FUSE có sẵn , tôi chỉ thấy Ramfuse , không may bị bỏ rơi ngược dòng.
Nói chung, không, hệ thống tập tin chỉ có thể được gắn kết bằng root. Nếu bạn cho phép người dùng đặt các hệ thống tập tin một cách tùy tiện, điều đó về cơ bản là cho họ root. (Cách dễ dàng: gắn kết một lần / etc, đặt mật khẩu của riêng bạn và đổ bóng ở đó, su với mật khẩu gốc mới bạn vừa tạo, ngắt kết nối)
Nếu bạn muốn một tmpfs tại một vị trí cụ thể, bạn có thể thêm nó vào /etc/fstab
, với các cờ noauto,user
và sau đó người dùng sẽ có thể gắn nó (nhưng không rõ tại sao bạn không chỉ tự động gắn nó)
Nếu người dùng cần các tmpfs tùy ý, thì bạn có một vài tùy chọn:
sudo
để cho phép người dùng chạy nó. Đảm bảo rằng bạn không cho phép người dùng chọn các đường dẫn tùy ý.