GNU/Linux >> Znalost Linux >  >> Linux

(Jak) mohu vytvořit tmpfs jako běžný uživatel (jiný než root)?

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žít M a G zde).
  • mode je velmi důležité , s osmičkovým kódem 0770 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.


Linux
  1. Jak vytvořit uživatele Sudo v Rocky Linux 8

  2. Jak mohu vytvořit nepřihlášeného uživatele?

  3. (Jak) mohu vytvořit tmpfs jako běžný uživatel (jiný než root)?

  1. Jak vytvořit uživatele Sudo v Debianu

  2. Jak vytvořit uživatele Linuxu pomocí Ansible

  3. Jak mohu vyhledat uživatelské jméno podle id v linuxu?

  1. Jak vytvořím crontab pomocí skriptu

  2. Jak mohu přidat běžného uživatele do souboru sudoers?

  3. Jak vytvořit extra uživatele root?