GNU/Linux >> Tutoriels Linux >  >> Linux

(Comment) puis-je créer un tmpfs en tant qu'utilisateur régulier (non root) ?

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 utiliser M et G ici).
  • mode est très important , avec le code octal 0770 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.


Linux
  1. Comment créer un utilisateur Sudo dans Debian

  2. Comment créer un utilisateur sous Linux[Gestion des utilisateurs]

  3. Comment créer un utilisateur Linux avec Ansible

  4. Comment créer une crontab via un script

  5. Comment créer un utilisateur root supplémentaire ?

Comment créer un utilisateur Sudo sur Ubuntu

Comment créer un utilisateur Sudo sur CentOS

Comment créer un utilisateur Sudo sur Debian

Comment utiliser le gestionnaire d'utilisateurs dans cPanel. Puis-je créer un utilisateur cPanel séparé ?

Comment créer un utilisateur Sudo sur CentOS

Comment puis-je créer une nouvelle base de données MySQL dans cPanel ?