Answers:
Linux提供了任何用户都可以使用的tmpfs设备/dev/shm
。默认情况下,它不会挂载到特定目录,但是您仍然可以将其用作一个目录。
只需在中创建目录/dev/shm
,然后将其符号链接到所需的任何位置。您可以给创建的目录选择任何权限,以便其他用户无法访问它。
这是RAM支持的设备,因此默认情况下内存中有什么。您可以在其中创建所需的任何目录/dev/shm
自然,放置在此处的文件将无法重新启动,并且如果您的计算机开始交换,/dev/shm
将无济于事。
平行于所述的Solaris /dev/shm
就是/tmp
其为“交换”类型的分区,并且还基于记忆的。与一样/dev/shm
,任意用户都可以/tmp
在Solaris上创建文件。
OpenBSD也可以使用基于内存的挂载,但是默认情况下没有可用的挂载。超级用户可以使用mount_mfs命令。
我不确定其他* BSD。
/dev/tmpfs
系统上似乎没有(我自己的系统没有3.0.0内核)。您确定这不是您的发行版所创建的吗?
/run
,可能/run/shm
需要在更新我的答案之前进行进一步调查。
...在具有主动交换功能的系统上!您的计算机启用它的可能性很高。
有一个更好,安全,标准的替代方法ramfs
。ramfs
如果您打算使用RAM支持的空间来临时存储敏感数据,例如私钥,比特币或以太坊钱包等,则可能要使用。
ramfs
比tmpfs
安全性要好,因为ramfs
数据永远不会被交换(保存到物理存储驱动器),而tmpfs
可能会被交换。然后,第三方可以检查交换空间并提取敏感数据。
您可以准备ramfs
装载,以便任何非特权用户都可以按需装载/卸载它。
为此,您将需要root特权一次。如果您缺乏root特权,请系统管理员为您设置此权限。
首先,您需要在中添加一行/etc/fstab
。fstab中的行可能如下所示:
none /mnt/ramfs ramfs noauto,user,size=1024M,mode=0770 0 0
/mnt/ramfs
是一个挂载点,将在其中挂载ramfs文件系统。目录应该存在。noauto
选项可防止此文件自动安装(例如,在系统启动时)。user
使普通用户可以安装此文件。size
设置这个“虚拟盘的”大小(你可以使用M
和G
这里)。mode
这是非常重要的,使用八进制代码,0770
只有root和挂载此文件系统的用户才可以对其进行读写,而不能对其他八进制代码进行读写(您也可以使用选择的其他代码,但是请务必确定! )。完成此操作后,任何用户都可以按需安装它。
一旦某些用户安装了该ramfs
文件,便会创建新的1024 MB 文件系统并将其安装在/mnt/ramfs/
。它将归root:user
。一旦他/她卸载它,或者系统重新启动,这个基于RAM的文件系统将与所有数据一起消失。真酷。
同样,该文件系统可以由多个用户独立安装,但不能同时安装,即,为准备由下一个用户安装,以前的用户应卸载该文件系统。
安装:
mount /mnt/ramfs/
卸下:
umount /mnt/ramfs/
PS:如果您尝试以rsync
非root用户身份归档到新安装/创建的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上运行。
您的系统可能已有一个;最近的基于Glibc的Linux系统总是安装有tmpfs/dev/shm
。
如果您的系统没有一个,或者它太小,那么不是由root挂载的文件系统就意味着FUSE。在Ubuntu上,您需要加入该fuse
小组才能使用FUSE。在查看可用的FUSE文件系统时,我只看到Ramfuse,不幸的是它被放弃在上游。
通常,不可以,文件系统只能通过root挂载。如果允许用户任意放置文件系统,那实际上就是赋予它们根目录。(简单的方法:在/ etc上挂载一个,在其中放置自己的passwd和shadow,然后使用刚刚创建的新root密码su卸载)
如果您想在特定位置放置tmpfs,可以将其添加到/etc/fstab
,并带有的标志,noauto,user
然后用户可以挂载它(但不清楚为什么您不只是自动挂载它)
如果用户需要任意的tmpfs,则有两种选择:
sudo
允许用户运行它。请确保你不会让用户挑选任意路径。