GNU/Linux >> Tutoriales Linux >  >> Linux

(¿Cómo) puedo crear un tmpfs como usuario normal (no root)?

Linux proporciona un dispositivo tmpfs que cualquier usuario puede usar, /dev/shm . No está montado en un directorio específico de forma predeterminada, pero aún puede usarlo como tal.

Simplemente cree un directorio en /dev/shm y luego vincularlo a donde quieras. Puede otorgar al directorio creado los permisos que elija, para que otros usuarios no puedan acceder a él.

Este es un dispositivo respaldado por RAM, por lo que lo que hay está en la memoria de forma predeterminada. Puede crear cualquier directorio que necesite dentro de /dev/shm

Naturalmente, los archivos colocados aquí no sobrevivirán a un reinicio, y si su máquina comienza a intercambiarse, /dev/shm no te ayudará.

El Solaris paralelo a /dev/shm es /tmp que es una partición de tipo "intercambio", y también basada en memoria. Como con /dev/shm , los usuarios arbitrarios pueden crear archivos en /tmp en Solaris.

OpenBSD también tiene la capacidad de usar un montaje basado en memoria, pero no tiene uno disponible por defecto. El comando mount_mfs está disponible para el superusuario.

No estoy seguro acerca de otros *BSD.


/dev/shm no es adecuado para secretos

...en sistemas con intercambio activo! Las posibilidades son muy altas su computadora lo tiene habilitado.

Hay un mejor, efímero garantizado , alternativa estándar — ramfs . Es posible que desee utilizar ramfs si planea usar espacio respaldado por RAM para temporal almacenar datos confidenciales, como claves privadas, billeteras Bitcoin o Ethereum y demás.

ramfs es mejor que tmpfs cuando los datos deben ser secretos, ya que ramfs datos nunca se intercambia (se guarda en una unidad de almacenamiento física), mientras que tmpfs puede ser intercambiado Los terceros que luego obtengan acceso raíz o físico a la máquina pueden inspeccionar el espacio de intercambio y extraer datos confidenciales .

La solución

Puedes preparar ramfs mount para que cualquier usuario sin privilegios pueda montarlo o desmontarlo a pedido.

Para hacer esto, necesitará root privilegio, una vez . Pídele al administrador de tu sistema que configure esto por ti, si no tienes privilegios de root.

Al principio, debe agregar una línea al /etc/fstab . La línea en fstab puede verse así:

none    /mnt/ramfs    ramfs    noauto,user,size=1024M,mode=0770    0    0
  • /mnt/ramfs es un punto de montaje, donde se montará el sistema de archivos ramfs. El directorio debe existir .
  • noauto La opción evita que esto se monte automáticamente (por ejemplo, en el arranque del sistema).
  • user hace que los usuarios habituales puedan montarlo.
  • size establece el tamaño de este "ramdisk" (puede usar M y G aquí).
  • mode es muy importante , con el código octal 0770 solo el root y el usuario, que montaron este sistema de archivos, podrán leer y escribir en él, no los demás (también puede usar un código diferente de su elección, ¡pero asegúrese de hacerlo!).

Una vez hecho esto, cualquier usuario podrá montarlo a pedido.

Una vez que algún usuario monta esto, nuevos 1024 MB ramfs el sistema de archivos se crea y monta en /mnt/ramfs/ . Será propiedad de root:user . Una vez que lo desmonte, o el sistema se reinicie, este sistema de archivos basado en RAM desaparecerá. con todos sus datos Lo cual es genial.

Además, este sistema de archivos puede ser montado por varios usuarios de forma independiente, pero no al mismo tiempo , es decir, para estar listo para el montaje por parte de un próximo usuario, el usuario anterior debe desmontar este sistema de archivos. O puede crear sistemas de archivos individuales para cada usuario.

para montar:

mount /mnt/ramfs/

para desmontar:

umount /mnt/ramfs/

PD Si está intentando rsync archivos a la raíz de los ramfs recién montados/creados como usuario no root, puede enfrentar un rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1] error. Esto está completamente bien y se espera, porque su usuario no posee la raíz del sistema de archivos RAM. La solución es simple, simplemente cree un directorio allí, /mnt/ramfs/copied/ por ejemplo, y rsync en él.

P.P.D. Probado en Debian 9. Seguro que también funcionará en Ubuntu.

P.P.P.S. Aunque mucho más seguro, el almacenamiento basado en RAM es todavía vulnerable a algunos ataques elaborados, como el ataque de arranque en frío. Entonces, si realmente se toma en serio la seguridad de sus datos, asegúrese de físicamente asegure su PC/portátil, bloquee la carcasa y las tarjetas de memoria, o incluso mejor, considere usar una computadora con una memoria RAM soldada directamente a la placa base (que es el caso de la mayoría de las laptops ultraportátiles de nivel superior). También considere apagar completamente su computadora si no tiene la intención de usarla en la próxima hora más o menos. Tal vez incluso ir tan lejos como para deshabilitar por completo las funciones de suspensión/hibernación.


Es posible que su sistema ya tenga uno disponible; Los sistemas Linux recientes basados ​​en Glibc siempre tienen un tmpfs montado en /dev/shm .

Si su sistema no tiene uno o es demasiado pequeño, entonces un sistema de archivos no montado por root significa FUSE. En Ubuntu, debe estar en el fuse grupo para usar FUSE. Mirando a través de los sistemas de archivos FUSE disponibles, solo veo Ramfuse, que desafortunadamente está abandonado aguas arriba.


Linux
  1. Cómo crear un usuario Sudo en Debian

  2. Cómo crear un usuario Sudo en Rocky Linux 8

  3. ¿Cómo puedo crear un usuario que no inicie sesión?

  4. (¿Cómo) puedo crear un tmpfs como usuario normal (no root)?

  5. ¿Cómo puedo buscar un nombre de usuario por id en Linux?

Cómo crear un usuario Sudo en Ubuntu

Cómo crear un usuario Sudo en CentOS

Cómo crear un usuario Sudo en Debian

Cómo usar el Administrador de usuarios en cPanel. ¿Puedo crear un usuario de cPanel separado?

Cómo crear un usuario Sudo en CentOS

¿Cómo puedo crear una nueva base de datos MySQL en cPanel?