Linux fournit un périphérique tmpfs que tout utilisateur peut utiliser, /dev/shm
. Il n'est pas monté dans un répertoire spécifique par défaut, mais vous pouvez toujours l'utiliser comme tel.
Créez simplement un répertoire en /dev/shm
puis créez un lien symbolique vers où vous voulez. Vous pouvez donner au répertoire créé les autorisations de votre choix, afin que les autres utilisateurs ne puissent pas y accéder.
Il s'agit d'un périphérique basé sur la RAM, donc ce qu'il y a en mémoire par défaut. Vous pouvez créer tous les répertoires dont vous avez besoin dans /dev/shm
Naturellement, les fichiers placés ici ne survivront pas à un redémarrage, et si votre machine commence à échanger, /dev/shm
ne vous aidera pas.
Le Solaris parallèle à /dev/shm
est /tmp
qui est une partition de type "swap", et également basée sur la mémoire. Comme avec /dev/shm
, des utilisateurs arbitraires peuvent créer des fichiers en /tmp
sur Solaris.
OpenBSD a également la capacité d'utiliser un montage basé sur la mémoire, mais n'en a pas de disponible par défaut. La commande mount_mfs est disponible pour le super utilisateur.
Je ne suis pas sûr des autres *BSD.
/dev/shm ne convient pas aux secrets
...sur les systèmes avec swap actif ! Les chances sont très élevées votre ordinateur l'a activé.
Il existe un meilleur éphémère garanti , alternative standard — ramfs
. Vous pouvez utiliser ramfs
si vous prévoyez d'utiliser l'espace sauvegardé en RAM pour temporaire stocker des données sensibles, telles que des clés privées, des portefeuilles Bitcoin ou Ethereum, etc.
ramfs
vaut mieux que tmpfs
lorsque les données doivent être secrètes, depuis ramfs
données jamais est échangé (enregistré sur un lecteur de stockage physique), tandis que tmpfs
peut se faire échanger. Les tiers qui obtiennent ultérieurement un accès root ou physique à la machine peuvent alors inspecter l'espace d'échange et extraire des données sensibles .
La solution
Vous pouvez préparer ramfs
monter afin que tout utilisateur non privilégié puisse le monter/démonter à la demande.
Pour ce faire, vous aurez besoin de root privilège, une fois . Demandez à l'administrateur de votre système de le configurer pour vous, si vous ne disposez pas des privilèges root.
Au début, vous devez ajouter une ligne au /etc/fstab
. La ligne en fstab
peut ressembler à ceci :
none /mnt/ramfs ramfs noauto,user,size=1024M,mode=0770 0 0
/mnt/ramfs
est un point de montage, où le système de fichiers ramfs sera monté. Le répertoire devrait exister .noauto
l'option l'empêche d'être monté automatiquement (par exemple, au démarrage du système).user
rend ceci montable par des utilisateurs réguliers.size
définit la taille de ce "disque virtuel" (vous pouvez utiliserM
etG
ici).mode
est très important , avec le code octal0770
seuls le root et l'utilisateur, qui ont monté ce système de fichiers, pourront y lire et y écrire, pas les autres (vous pouvez également utiliser un code différent de votre choix, mais soyez-en sûr !).
Lorsque cela sera fait, n'importe quel utilisateur pourra le monter à la demande.
Une fois qu'un utilisateur l'a monté, un nouveau ramfs
de 1 024 Mo le système de fichiers est créé et monté à /mnt/ramfs/
. Il appartiendra à root:user
. Une fois qu'il l'a démonté ou que le système a redémarré, ce système de fichiers basé sur la RAM disparaîtra avec tous ses données. Ce qui est cool.
De plus, ce système de fichiers peut être monté par plusieurs utilisateurs indépendamment, mais pas en même temps , c'est-à-dire que pour être prêt à être monté par un utilisateur suivant, l'utilisateur précédent doit démonter ce système de fichiers. Ou vous pouvez créer des systèmes de fichiers individuels pour chaque utilisateur.
monter :
mount /mnt/ramfs/
pour démonter :
umount /mnt/ramfs/
PS Si vous essayez de rsync
fichiers à la racine des ramfs nouvellement montés/créés en tant qu'utilisateur non root, vous pouvez faire face à un rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
Erreur. C'est tout à fait correct et attendu, car votre utilisateur ne possède pas la racine du système de fichiers ram. La solution est simple, créez simplement un répertoire ici, /mnt/ramfs/copied/
par exemple, et rsync
dedans.
P.P.S. Testé sur Debian 9. Je suis sûr que cela fonctionnera aussi sur Ubuntu.
P.P.P.S. Bien que beaucoup plus sécurisé, le stockage basé sur la RAM est toujours vulnérable à certaines attaques élaborées, comme l'attaque de démarrage à froid. Donc, si vous êtes vraiment sérieux au sujet de la sécurité de vos données, assurez-vous de physiquement sécurisez votre PC/ordinateur portable, verrouillez le boîtier et les clés USB, ou mieux encore, envisagez d'utiliser un ordinateur avec une RAM soudée directement dans la carte mère (ce qui est le cas pour la plupart des ordinateurs portables ultraportables de niveau supérieur). Pensez également à éteindre complètement votre ordinateur si vous n'avez pas l'intention de l'utiliser dans l'heure qui vient. Peut-être même aller jusqu'à désactiver complètement les fonctions de veille/hibernation.
Votre système peut en avoir un déjà disponible; les systèmes Linux récents basés sur Glibc ont toujours un tmpfs monté sur /dev/shm
.
Si votre système n'en a pas ou s'il est trop petit, un système de fichiers non monté par root signifie à peu près FUSE. Sur Ubuntu, vous devez être dans le fuse
groupe pour utiliser FUSE. En parcourant les systèmes de fichiers FUSE disponibles, je ne vois que Ramfuse, qui est malheureusement abandonné en amont.