GNU/Linux >> LINUX-Kenntnisse >  >> Linux

(Wie) kann ich als normaler (Nicht-Root-)Benutzer ein tmpfs erstellen?

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önnen M verwenden und G hier).
  • mode ist sehr wichtig , mit dem Oktalcode 0770 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.


Linux
  1. So erstellen Sie einen Sudo-Benutzer in Debian

  2. So erstellen Sie einen Linux-Benutzer mit Ansible

  3. So erstellen Sie einen Sudo-Benutzer in Rocky Linux 8

  4. Wie kann ich einen Nicht-Login-Benutzer erstellen?

  5. Wie erstelle ich einen zusätzlichen Root-Benutzer?

So erstellen Sie einen Sudo-Benutzer unter Ubuntu

So erstellen Sie einen Sudo-Benutzer unter CentOS

So erstellen Sie einen Sudo-Benutzer unter Debian

So verwenden Sie den Benutzer-Manager in cPanel. Kann ich einen separaten cPanel-Benutzer erstellen?

So erstellen Sie einen Sudo-Benutzer unter CentOS

Wie kann ich eine neue MySQL-Datenbank in cPanel erstellen?