Linux poskytuje zařízení tmpfs, které může používat každý uživatel, /dev/shm
. Ve výchozím nastavení není připojen k určitému adresáři, ale stále jej můžete jako jeden používat.
Jednoduše vytvořte adresář v /dev/shm
a poté jej symbolicky propojte, kam chcete. Vytvořenému adresáři můžete udělit libovolná oprávnění, aby k němu ostatní uživatelé neměli přístup.
Toto je zařízení se zálohou RAM, takže to, co tam je, je ve výchozím nastavení v paměti. V /dev/shm
si můžete vytvořit libovolné adresáře, které potřebujete
Zde umístěné soubory přirozeně nepřežijí restartování, a pokud se váš počítač začne vyměňovat, /dev/shm
vám nepomůže.
Solaris paralelně k /dev/shm
je /tmp
což je oddíl typu "swap" a také založený na paměti. Stejně jako u /dev/shm
, mohou libovolní uživatelé vytvářet soubory v /tmp
na Solaris.
OpenBSD má také schopnost používat připojení založené na paměti, ale ve výchozím nastavení není k dispozici. Příkaz mount_mfs je dostupný superuživateli.
U ostatních *BSD si nejsem jistý.
/dev/shm není vhodný pro tajemství
...na systémech s aktivním swapem! Šance jsou velmi vysoké váš počítač to má povoleno.
Existuje lepší,zaručeně efemérní , standardní alternativa — ramfs
. Možná budete chtít použít ramfs
pokud plánujete používat místo zálohované RAM na dočasné ukládat citlivá data, jako jsou soukromé klíče, bitcoinové nebo Ethereum peněženky a podobně.
ramfs
je lepší než tmpfs
když data musí být tajná, protože ramfs
data nikdy se vymění (uloží na fyzický úložný disk), zatímco tmpfs
může nechat se vyměnit. Třetí strany, které později získají root nebo fyzický přístup k počítači, pak mohou zkontrolovat odkládací prostor a extrahovat citlivá data .
Řešení
Můžete si připravit ramfs
mount, aby jej každý neprivilegovaný uživatel mohl připojit/odpojit na požádání.
K tomu budete potřebovat root privilegium, jednou . Pokud nemáte práva root, požádejte správce vašeho systému, aby to nastavil za vás.
Nejprve musíte přidat řádek do /etc/fstab
. Řádek v fstab
může vypadat takto:
none /mnt/ramfs ramfs noauto,user,size=1024M,mode=0770 0 0
/mnt/ramfs
je přípojný bod, kam bude připojen souborový systém ramfs. Adresář by měl existovat .noauto
Tato volba zabraňuje automatickému připojení (např. při spouštění systému).user
umožňuje to připojit běžnými uživateli.size
nastavuje velikost této "ramdisku" (můžete použítM
aG
zde).mode
je velmi důležité , s osmičkovým kódem0770
pouze root a uživatel, kteří připojili tento souborový systém, do něj budou moci číst a zapisovat, ne ostatní (můžete také použít jiný kód dle svého výběru, ale buďte si tím velmi jisti!).
Když to uděláte, každý uživatel bude moci toto na požádání připojit.
Jakmile to nějaký uživatel připojí, nových 1024 MB ramfs
souborový systém je vytvořen a připojen na /mnt/ramfs/
. Vlastníkem bude root:user
. Jakmile jej odpojí nebo se systém restartuje, tento souborový systém založený na RAM zmizí se všemi jeho údaje. Což je skvělé.
Tento souborový systém může být také připojen několika uživateli nezávisle, ale ne ve stejnou dobu , tj. aby byl předchozí uživatel připraven k připojení dalším uživatelem, měl by tento souborový systém odpojit. Nebo můžete vytvořit individuální souborové systémy pro každého uživatele.
připojit:
mount /mnt/ramfs/
odpojení:
umount /mnt/ramfs/
P.S. Pokud se pokoušíte o rsync
soubory do kořenového adresáře nově připojených/vytvořených ramfs jako uživatel bez oprávnění root, můžete čelit rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
chyba. To je zcela v pořádku a očekávané, protože váš uživatel nevlastní kořen souborového systému ram. Řešení je jednoduché, stačí tam vytvořit nějaký adresář, /mnt/ramfs/copied/
například a rsync
do toho.
P.P.S. Testováno na Debianu 9. Určitě to bude fungovat i na Ubuntu.
P.P.P.S. Přestože je úložiště založené na RAM mnohem bezpečnější, je stále zranitelné k některým propracovaným útokům, jako je útok studenou botou. Pokud to tedy s bezpečností svých dat myslíte opravdu vážně, ujistěte se, že fyzicky zabezpečte svůj počítač/notebook, uzamkněte pouzdro a paměťové karty, nebo ještě lépe zvažte použití počítače s pamětí RAM připájenou přímo k základní desce (což je případ většiny ultrapřenosných notebooků vyšší řady). Zvažte také úplné vypnutí počítače, pokud jej nehodláte během příští hodiny používat. Možná zajít dokonce tak daleko, že funkce spánku/hibernace úplně zakážete.
Váš systém může mít již jeden dostupný; nejnovější linuxové systémy založené na Glibc mají vždy tmpfs připojené na /dev/shm
.
Pokud váš systém žádný nemá nebo je příliš malý, pak souborový systém nepřipojený rootem v podstatě znamená FUSE. Na Ubuntu musíte být v fuse
skupinu použít FUSE. Když se podívám na dostupné souborové systémy FUSE, vidím pouze Ramfuse, který je bohužel opuštěn.