Unterschiede zwischen Symlink zu / tmp und tmpfs

918
Mark

Ich versuche ein schreibgeschütztes Dateisystem (Raspbian) zu erstellen. Ein üblicher Weg ist, ein Verzeichnis (das beschreibbar sein soll) in einem tmpfs-Verzeichnis zu platzieren.

Ich habe zum Beispiel einige Tutorials gefunden, die Folgendes vorschlagen:

rm -rf /var/lib/dhcp/ /var/run /var/spool /var/lock ln -s /tmp /var/lib/dhcp ln -s /tmp /var/run ln -s /tmp /var/spool ln -s /tmp /var/lock 

und in /etc/fstab:

tmpfs /tmp tmpfs nosuid,nodev 0 0 tmpfs /var/log tmpfs nosuid,nodev 0 0 tmpfs /var/tmp tmpfs nosuid,nodev 0 0 

so weit ich das verstehe:

  • /var/lib/dhcp/, /var/run, /var/spoolUnd /var/lockwerden an symlinked /tmpdaß als tmpfs montiert
  • aber /var/logund /var/tmpwerden auf separaten tmpfs eingehängt

Warum kann man nicht einfach /tmpals tmpfs und symlink alle anderen Verzeichnisse einbinden?

1
Seltsame Technik ... Normalerweise können Benutzer ohne Rootberechtigung in / tmp schreiben, jedoch nicht in / var / log oder / var / run. Mit den obigen Links ist das Schreiben auf / tmp dasselbe wie das Schreiben in diese Verzeichnisse. Zugriffsrechte oder die Vermeidung von Namenskollisionen könnten eine Erklärung sein. xenoid vor 7 Jahren 0
Es macht Sinn. Über die "seltsame" Technik - möchten Sie eine bessere vorschlagen? Mark vor 7 Jahren 1
Soweit ich das beurteilen kann, könnte man separate Verzeichnisse unter `/ tmp /` (oder sogar sauberer `/ tmp / var`) erstellen und jedes` / var / irgendwas` mit dem passenden `/ tmp / var / verknüpfen. etwas "(mit ausreichenden Zugriffsrechten). xenoid vor 7 Jahren 1
Ok, das habe ich versucht mit * zu sagen. Warum kann man nicht einfach / tmp als tmpfs mounten und dort alle anderen Verzeichnisse symbolisieren? * Mark vor 7 Jahren 0

1 Antwort auf die Frage

0
Zombie Feynman

Obwohl es keinen wirklich richtigen Ansatz gibt, ist eine der besseren Methoden die von xenoid : mount /tmpas tmpfsund macht dort Unterverzeichnisse mit den entsprechenden Berechtigungen. Verbinden Sie dann die entsprechenden Unterverzeichnisse /varmit diesen.

Im Allgemeinen ist es wahrscheinlich keine gute Idee, mehrere temporäre Dateisysteme bereitzustellen, es sei denn, Sie legen deren Größe manuell fest. Standardmäßig (je nach man tmpfs) erhält jeder die Hälfte des verfügbaren Arbeitsspeichers. Ihr Beispiel würde insgesamt 87,5% des gesamten freien Speichers zum Zeitpunkt des Einbaus beanspruchen, und jede nachfolgende Instanz ist halb so groß wie die vorherige. Dies ist eine zutiefst seltsame Sache.

Wenn Sie wirklich nur ein temporäres Dateisystem wünschen, können Sie alternativ ein einzelnes großes machen tmpfsund UnionFS oder ähnliches verwenden, um eine temporäre schreibbare Überlagerung von zu erstellen /. Die mögliche Sicherheit, die Sie durch ein grundlegend schreibbares Verhalten verlieren /(mit Berechtigungen, die ohnehin die übliche Menge an Sicherheit bieten), wird dadurch aufgehoben, dass das Ganze beim Neustart gelöscht wird.