Die Distribution ist ein Ubuntu-Server, auf dem der Linux-Kernel 2.6.35-30 ausgeführt wird.
Ich hätte gerne ein Verzeichnis, das sich vollständig im Speicher befindet. Ist das ohne root-Rechte möglich?
quelle
Die Distribution ist ein Ubuntu-Server, auf dem der Linux-Kernel 2.6.35-30 ausgeführt wird.
Ich hätte gerne ein Verzeichnis, das sich vollständig im Speicher befindet. Ist das ohne root-Rechte möglich?
Linux stellt ein tmpfs-Gerät zur Verfügung, das jeder Benutzer verwenden kann /dev/shm
. Standardmäßig ist es nicht an ein bestimmtes Verzeichnis angehängt, Sie können es jedoch weiterhin als solches verwenden.
Erstellen Sie einfach ein Verzeichnis in /dev/shm
und verknüpfen Sie es mit einem Symbol, wo immer Sie möchten. Sie können dem erstellten Verzeichnis beliebige Berechtigungen zuweisen, sodass andere Benutzer nicht darauf zugreifen können.
Dies ist ein RAM-gestütztes Gerät. Was sich also dort befindet, ist standardmäßig im Speicher. Sie können alle Verzeichnisse erstellen, die Sie benötigen/dev/shm
Natürlich überstehen die hier abgelegten Dateien einen Neustart nicht, und wenn Ihr Computer zu tauschen beginnt, /dev/shm
hilft dies Ihnen nicht.
Die Solaris parallel /dev/shm
heißt /tmp
es ist , eine „Swap“ Typ - Partition und auch Speicher basiert. Wie bei /dev/shm
können beliebige Benutzer Dateien /tmp
unter Solaris erstellen .
OpenBSD bietet die Möglichkeit, auch einen speicherbasierten Mount zu verwenden, der jedoch standardmäßig nicht verfügbar ist. Der Befehl mount_mfs steht dem Superuser zur Verfügung.
Bei anderen * BSDs bin ich mir nicht sicher.
/dev/tmpfs
auf dem System zu sein (ebenso wenig wie mein eigenes System mit einem 3.0.0-Kernel). Sind Sie sicher, dass dies nicht von Ihrer Distribution verursacht wurde?/run
und muss möglicherweise/run/shm
weiter untersucht werden, bevor ich meine Antwort aktualisiere./ dev / shm ist unsicher
... auf Systemen mit aktivem Swap ! Die Chancen stehen sehr hoch, dass Ihr Computer es aktiviert hat.
Es gibt eine bessere, sichere Standardalternative
ramfs
. Sie können diese Option verwenden,ramfs
wenn Sie RAM-gesicherten Speicherplatz zum temporären Speichern vertraulicher Daten wie privater Schlüssel, Bitcoin- oder Ethereum-Brieftaschen und dergleichen verwenden möchten .ramfs
ist besser alstmpfs
in Bezug auf die Sicherheit, daramfs
Daten niemals ausgetauscht (auf einem physischen Speicherlaufwerk gespeichert) werden, während sietmpfs
möglicherweise ausgetauscht werden. Dritte können dann den Swap Space inspizieren und sensible Daten extrahieren .Die Lösung
Sie können die
ramfs
Bereitstellung vorbereiten , damit jeder nicht privilegierte Benutzer sie bei Bedarf aktivieren oder deaktivieren 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.
Zunächst müssen Sie eine Zeile in das Feld einfügen
/etc/fstab
. Die Zeile in fstab könnte folgendermaßen aussehen:/mnt/ramfs
ist ein Einhängepunkt, an dem das RAMFS-Dateisystem eingehängt wird. Verzeichnis sollte vorhanden sein.noauto
Die Option verhindert, dass dies automatisch gemountet wird (z. B. beim Systemstart).user
macht diese für normale Benutzer einbindbar.size
Legt die Größe dieser "Ramdisk" fest (Sie könnenM
undG
hier verwenden).mode
ist sehr wichtig , mit dem Oktalcode können0770
nur Root und Benutzer, die dieses Dateisystem gemountet haben, lesen und darauf schreiben, nicht die anderen (Sie können auch einen anderen Code Ihrer Wahl verwenden, aber seien Sie sehr sicher! ).Wenn dies erledigt ist, kann jeder Benutzer dies bei Bedarf bereitstellen.
Sobald ein Benutzer dies aktiviert hat, wird ein neues 1024-MB-
ramfs
Dateisystem erstellt und unter bereitgestellt/mnt/ramfs/
. Es wird im Besitz von seinroot:user
. Sobald er es ausgehängt oder das System neu gestartet wird, verschwindet dieses RAM-basierte Dateisystem mit all seinen Daten. Welches ist cool.Dieses Dateisystem kann auch von mehreren Benutzern unabhängig, jedoch nicht gleichzeitig gemountet werden , dh um für das Mounten durch einen nächsten Benutzer bereit zu sein, sollte der vorherige Benutzer das Mounten dieses Dateisystems aufheben.
montieren:
aussteigen:
PS Wenn Sie
rsync
als Nicht-Root-Benutzer versuchen, Dateien im Stammverzeichnis der neu gemounteten / erstellten RAM-Dateien zu speichern, kann einrsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
Fehler auftreten. 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/mnt/ramfs/copied/
zum Beispiel dort ein Verzeichnis undrsync
legen Sie es dort an.PPS auf Debian 9 getestet. Ich bin mir ziemlich sicher, dass es auch auf Ubuntu funktionieren wird.
quelle
Auf Ihrem System ist möglicherweise bereits eines verfügbar. Auf neueren Linux-Systemen, die auf Glibc basieren, ist immer ein tmpfs installiert
/dev/shm
.Wenn Ihr System nicht über eines verfügt oder es zu klein ist, bedeutet ein Dateisystem, das nicht von root gemountet wurde, FUSE . Unter Ubuntu müssen Sie Mitglied der
fuse
Gruppe sein, um FUSE verwenden zu können. Beim Durchsuchen der verfügbaren FUSE-Dateisysteme sehe ich nur Ramfuse , das leider im Upstream-Bereich aufgegeben wird.quelle
In der Regel können Dateisysteme nur von root gemountet werden. Wenn Sie einem Benutzer erlauben, Dateisysteme willkürlich zu platzieren, erhalten sie im Wesentlichen root. (Einfacher Weg: mounten Sie eines über / etc, legen Sie Ihr eigenes Passwort und Schatten dort ab, su mit dem neuen Root-Passwort, das Sie gerade erstellt haben, heben Sie das Mounten auf)
Wenn Sie ein tmpfs an einem bestimmten Ort haben möchten, können Sie es hinzufügen
/etc/fstab
, mit den Flags vonnoauto,user
und dann kann ein Benutzer es mounten (aber es ist nicht besonders klar, warum Sie es nicht einfach automatisch mounten würden).Wenn Benutzer beliebige tmpfs benötigen, haben Sie einige Möglichkeiten:
sudo
diese Option , um Benutzern die Ausführung zu ermöglichen. Stellen Sie sicher, dass Sie dem Benutzer nicht erlauben, beliebige Pfade auszuwählen.quelle