Linux bietet ein tmpfs-Gerät, das jeder Benutzer verwenden kann, /dev/shm
. Es ist standardmäßig nicht in einem bestimmten Verzeichnis gemountet, aber Sie können es trotzdem als eines verwenden.
Erstellen Sie einfach ein Verzeichnis in /dev/shm
und verlinken Sie es dann wo immer Sie wollen. Sie können dem erstellten Verzeichnis beliebige Berechtigungen erteilen, sodass andere Benutzer nicht darauf zugreifen können.
Dies ist ein RAM-unterstütztes Gerät, was also standardmäßig im Arbeitsspeicher vorhanden ist. Sie können beliebige Verzeichnisse innerhalb von /dev/shm
erstellen
Natürlich überleben hier abgelegte Dateien einen Neustart nicht, und wenn Ihr Rechner mit dem Austausch beginnt, /dev/shm
wird dir nicht helfen.
Die Solaris-Parallele zu /dev/shm
ist /tmp
Dies ist eine Partition vom Typ "Swap", die auch speicherbasiert ist. Wie bei /dev/shm
, können beliebige Benutzer Dateien in /tmp
erstellen auf Solaris.
OpenBSD hat auch die Möglichkeit, ein speicherbasiertes Mounten zu verwenden, hat aber standardmäßig keines verfügbar. Der Befehl mount_mfs steht dem Superuser zur Verfügung.
Bei anderen *BSDs bin ich mir nicht sicher.
/dev/shm ist nicht für Geheimnisse geeignet
...auf Systemen mit aktivem Swap! Die Chancen stehen sehr hoch Ihr Computer hat es aktiviert.
Es gibt einen besseren, garantiert kurzlebigen , Standardalternative — ramfs
. Vielleicht möchten Sie ramfs
verwenden wenn Sie RAM-unterstützten Speicherplatz vorübergehend verwenden möchten sensible Daten wie private Schlüssel, Bitcoin- oder Ethereum-Geldbörsen und dergleichen speichern.
ramfs
ist besser als tmpfs
wenn Daten geheim sein müssen, seit ramfs
Daten nie wird ausgelagert (auf einem physischen Speicherlaufwerk gespeichert), während tmpfs
kann getauscht werden. Dritte, die später Root- oder physischen Zugriff auf die Maschine erhalten, können dann den Auslagerungsbereich inspizieren und sensible Daten extrahieren .
Die Lösung
Sie können ramfs
vorbereiten mount, damit jeder nicht privilegierte Benutzer es bei Bedarf mounten/unmounten kann.
Dazu benötigen Sie root Privileg, einmal . Bitten Sie den Administrator Ihres Systems, dies für Sie einzurichten, wenn Sie keine Root-Rechte haben.
Zuerst müssen Sie dem /etc/fstab
eine Zeile hinzufügen . Die Zeile in fstab
kann so aussehen:
none /mnt/ramfs ramfs noauto,user,size=1024M,mode=0770 0 0
/mnt/ramfs
ist ein Einhängepunkt, an dem das Ramfs-Dateisystem eingehängt wird. Verzeichnis sollte existieren .noauto
Option verhindert, dass dies automatisch gemountet wird (z. B. beim Hochfahren des Systems).user
macht dies für normale Benutzer montierbar.size
legt die Größe dieser "Ramdisk" fest (Sie könnenM
verwenden undG
hier).mode
ist sehr wichtig , mit dem Oktalcode0770
Nur root und Benutzer, die dieses Dateisystem gemountet haben, können darauf lesen und schreiben, nicht die anderen (Sie können auch anderen Code Ihrer Wahl verwenden, aber seien Sie sich dessen sehr sicher!).
Wenn dies erledigt ist, kann jeder Benutzer dies bei Bedarf einhängen.
Sobald ein Benutzer dies einbindet, neue 1024 MB ramfs
Dateisystem wird erstellt und unter /mnt/ramfs/
gemountet . Es wird root:user
gehören . Sobald er/sie es aushängt oder das System neu gestartet wird, wird dieses RAM-basierte Dateisystem verschwinden mit alle seine Daten. Das ist cool.
Außerdem kann dieses Dateisystem von mehreren Benutzern unabhängig voneinander gemountet werden, jedoch nicht gleichzeitig , d.h. um für das Mounten durch einen nächsten Benutzer bereit zu sein, sollte der vorherige Benutzer dieses Dateisystem aushängen. Oder Sie können individuelle Dateisysteme für jeden Benutzer erstellen.
einhängen:
mount /mnt/ramfs/
unmounten:
umount /mnt/ramfs/
P.S. Wenn Sie versuchen, rsync
Dateien in das Stammverzeichnis des neu gemounteten/erstellten ramfs als Nicht-Root-Benutzer, könnten Sie mit einem rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
konfrontiert werden Error. Dies ist völlig in Ordnung und wird erwartet, da Ihr Benutzer nicht das Stammverzeichnis des RAM-Dateisystems besitzt. Die Lösung ist einfach, erstellen Sie dort einfach ein Verzeichnis, /mnt/ramfs/copied/
zum Beispiel und rsync
hinein.
P.S.S. Getestet auf Debian 9. Ich bin mir ziemlich sicher, dass es auch auf Ubuntu funktionieren wird.
P.P.P.S. Obwohl wesentlich sicherer, ist RAM-basierter Speicher immer noch anfällig zu einigen ausgeklügelten Angriffen, wie dem Kaltstartangriff. Wenn Sie also die Sicherheit Ihrer Daten wirklich ernst nehmen, stellen Sie dies physisch sicher Sichern Sie Ihren PC/Laptop, schließen Sie das Gehäuse und die Speichersticks ab, oder noch besser, ziehen Sie die Verwendung eines Computers in Betracht, bei dem ein RAM direkt in das Motherboard gelötet ist (was bei den meisten ultraportablen Laptops der höheren Stufe der Fall ist). Denken Sie auch daran, Ihren Computer vollständig herunterzufahren, wenn Sie ihn in der nächsten Stunde oder so nicht verwenden möchten. Vielleicht gehen Sie sogar so weit, die Schlaf-/Ruhezustandsfunktionen vollständig zu deaktivieren.
Auf Ihrem System ist möglicherweise bereits eine verfügbar; Neuere Linux-Systeme, die auf Glibc basieren, haben immer ein tmpfs, das auf /dev/shm
gemountet ist .
Wenn Ihr System keines hat oder es zu klein ist, dann bedeutet ein Dateisystem, das nicht von root gemountet wurde, ziemlich viel FUSE. Unter Ubuntu müssen Sie sich im fuse
befinden Gruppe, um FUSE zu verwenden. Wenn ich die verfügbaren FUSE-Dateisysteme durchsehe, sehe ich nur Ramfuse, das leider von den Originalautoren aufgegeben wurde.