GNU/Linux >> Linux Esercitazione >  >> Linux

(Come) posso creare un tmpfs come utente normale (non root)?

Linux fornisce un dispositivo tmpfs che qualsiasi utente può utilizzare, /dev/shm . Non è montato in una directory specifica per impostazione predefinita, ma puoi comunque usarlo come tale.

Basta creare una directory in /dev/shm e poi collegalo simbolicamente a dove vuoi. Puoi concedere alla directory creata qualsiasi autorizzazione tu scelga, in modo che altri utenti non possano accedervi.

Questo è un dispositivo supportato da RAM, quindi cosa c'è in memoria per impostazione predefinita. Puoi creare tutte le directory di cui hai bisogno all'interno di /dev/shm

Naturalmente, i file posizionati qui non sopravviveranno a un riavvio e se la tua macchina inizia a scambiare, /dev/shm non ti aiuterà.

Il Solaris parallelo a /dev/shm è /tmp che è una partizione di tipo "swap" e anche basata sulla memoria. Come con /dev/shm , utenti arbitrari possono creare file in /tmp su Solaris.

OpenBSD ha anche la capacità di utilizzare un montaggio basato sulla memoria, ma non ne ha uno disponibile per impostazione predefinita. Il comando mount_mfs è disponibile per il super utente.

Non sono sicuro di altri * BSD.


/dev/shm non è adatto per i segreti

...su sistemi con scambio attivo! Le probabilità sono molto alte il tuo computer lo ha abilitato.

C'è un effimero garantito migliore , alternativa standard — ramfs . Potresti voler usare ramfs se prevedi di utilizzare lo spazio supportato dalla RAM per temporaneo memorizzare dati sensibili, come chiavi private, portafogli Bitcoin o Ethereum e simili.

ramfs è meglio di tmpfs quando i dati devono essere segreti, poiché ramfs dati mai viene scambiato (salvato su un'unità di archiviazione fisica), mentre tmpfs potrebbe fatti scambiare. Le terze parti che successivamente ottengono l'accesso root o fisico alla macchina possono quindi ispezionare lo spazio di swap ed estrarre dati sensibili .

La soluzione

Puoi preparare ramfs mount in modo che qualsiasi utente non privilegiato possa montarlo/smontarlo su richiesta.

Per fare ciò, avrai bisogno di root privilegio, una volta . Chiedi all'amministratore del tuo sistema di configurarlo per te, se non disponi dei privilegi di root.

All'inizio, devi aggiungere una riga al /etc/fstab . La riga in fstab potrebbe assomigliare a questo:

none    /mnt/ramfs    ramfs    noauto,user,size=1024M,mode=0770    0    0
  • /mnt/ramfs è un punto di montaggio, dove verrà montato il filesystem ramfs. La directory dovrebbe esistere .
  • noauto L'opzione impedisce che venga montato automaticamente (ad es. all'avvio del sistema).
  • user lo rende montabile da utenti normali.
  • size imposta la dimensione di questo "ramdisk" (puoi usare M e G qui).
  • mode è molto importante , con il codice ottale 0770 solo root e utente, che hanno montato questo filesystem, saranno in grado di leggere e scrivere su di esso, non gli altri (puoi usare anche un codice diverso a tua scelta, ma assicurati!).

Al termine, qualsiasi utente sarà in grado di montarlo su richiesta.

Una volta che un utente lo monta, nuovi 1024 MB ramfs il filesystem viene creato e montato in /mnt/ramfs/ . Sarà di proprietà di root:user . Una volta smontato o riavviato il sistema, questo filesystem basato su RAM svanirà con tutti i suoi dati. Il che è fantastico.

Inoltre, questo filesystem può essere montato da diversi utenti indipendentemente, ma non contemporaneamente , cioè per essere pronto per il montaggio da parte di un utente successivo, l'utente precedente deve smontare questo filesystem. Oppure puoi creare singoli filesystem per ciascun utente.

da montare:

mount /mnt/ramfs/

per smontare:

umount /mnt/ramfs/

P.S. Se stai provando a rsync file nella root dei ramf appena montati/creati come utente non root, potresti dover affrontare un rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1] errore. Questo è del tutto corretto e previsto, perché il tuo utente non possiede la radice del filesystem ram. La soluzione è semplice, basta creare una directory lì, /mnt/ramfs/copied/ ad esempio, e rsync dentro.

PPS Testato su Debian 9. Abbastanza sicuro che funzionerà anche su Ubuntu.

P.P.P.S. Anche se molto più sicuro, lo storage basato su RAM è ancora vulnerabile ad alcuni attacchi elaborati, come l'attacco con l'avvio a freddo. Quindi, se prendi davvero sul serio la sicurezza dei tuoi dati, assicurati di farlo fisicamente proteggi il tuo PC / laptop, blocca la custodia e le memory stick o, ancora meglio, considera l'utilizzo di un computer con una RAM saldata direttamente nella scheda madre (che è il caso della maggior parte dei laptop ultraportatili di livello superiore). Considera inoltre di spegnere completamente il computer se non intendi utilizzarlo entro un'ora circa. Forse arriva persino a disabilitare del tutto le funzioni di sospensione/ibernazione.


Il tuo sistema potrebbe averne già uno disponibile; i recenti sistemi Linux basati su Glibc hanno sempre un tmpfs montato su /dev/shm .

Se il tuo sistema non ne ha uno o è troppo piccolo, allora un filesystem non montato da root significa praticamente FUSE. Su Ubuntu, devi essere nel fuse gruppo per utilizzare FUSE. Esaminando i filesystem FUSE disponibili, vedo solo Ramfuse, che purtroppo è stato abbandonato a monte.


Linux
  1. Come creare un utente in Linux[Gestione utenti]

  2. Come creare un utente Sudo in Rocky Linux 8

  3. Come creo un crontab attraverso uno script

  4. (Come) posso creare un tmpfs come utente normale (non root)?

  5. Come posso cercare un nome utente per id in Linux?

Come creare un utente Sudo su Ubuntu

Come creare un utente Sudo su CentOS

Come creare un utente Sudo su Debian

Come usare User Manager in cPanel. Posso creare un utente cPanel separato?

Come creare un utente Sudo su CentOS

Come posso creare un nuovo database MySQL in cPanel?