Linux は、すべてのユーザーが使用できる tmpfs デバイス /dev/shm
を提供します。 .デフォルトでは特定のディレクトリにマウントされていませんが、1 つのディレクトリとして使用することはできます。
/dev/shm
にディレクトリを作成するだけです 次に、必要な場所にシンボリックリンクします。作成したディレクトリには、選択した権限を付与して、他のユーザーがアクセスできないようにすることができます。
これは RAM でバックアップされたデバイスであるため、デフォルトではメモリ内にあるものがあります。 /dev/shm
内に必要なディレクトリを作成できます
当然、ここに配置されたファイルは再起動後は存続しません。マシンがスワッピングを開始すると、/dev/shm
役に立ちません。
/dev/shm
に相当する Solaris /tmp
です これは「スワップ」タイプのパーティションであり、メモリベースでもあります。 /dev/shm
と同様 、任意のユーザーが /tmp
でファイルを作成する可能性があります
OpenBSD にはメモリ ベースのマウントを使用する機能もありますが、デフォルトでは使用できません。スーパーユーザーは mount_mfs コマンドを利用できます。
他の *BSD についてはわかりません。
/dev/shm はシークレットには適していません
...スワップがアクティブなシステムで!可能性は非常に高い お使いのコンピュータで有効になっています。
より優れた保証付きのエフェメラルがあります 、標準的な代替 — ramfs
. ramfs
を使用することもできます RAM バックアップ スペースを一時に使用する場合 秘密鍵、ビットコインまたはイーサリアムのウォレットなどの機密データを保存します。
ramfs
tmpfs
よりも優れています ramfs
以降、データを秘密にする必要がある場合 データ なし tmpfs
の間、スワップされます (物理ストレージ ドライブに保存されます)。 かもしれません 入れ替わる。後でマシンへのルート アクセスまたは物理アクセスを取得したサード パーティは、スワップ スペースを検査できます。 機密データの抽出 .
解決策
ramfs
を用意できます 権限のないユーザーがオンデマンドでマウント/アンマウントできるようにマウントします。
これを行うには、root が必要です 特権、1 回 . root 権限がない場合は、システムの管理者にセットアップを依頼してください。
最初に、/etc/fstab
に行を追加する必要があります。 . fstab
の行 次のようになります:
none /mnt/ramfs ramfs noauto,user,size=1024M,mode=0770 0 0
/mnt/ramfs
ramfs ファイルシステムがマウントされるマウントポイントです。ディレクトリは存在する必要があります .noauto
オプションは、これが自動的にマウントされるのを防ぎます (例:システムの起動時)。user
これを通常のユーザーがマウントできるようにします。size
この「ramdisk」のサイズを設定します (M
を使用できます) とG
mode
非常に重要です 、8 進コード0770
を使用 このファイルシステムをマウントした root とユーザーだけが読み書きでき、他のユーザーは読み書きできません (任意の別のコードを使用することもできますが、十分に確認してください!)。
これが完了すると、すべてのユーザーがオンデマンドでマウントできるようになります。
一部のユーザーがこれをマウントすると、新しい 1024 MB ramfs
ファイルシステムは /mnt/ramfs/
で作成され、マウントされます . root:user
が所有します .アンマウントするか、システムを再起動すると、この RAM ベースのファイルシステムは消滅します。 すべてで そのデータ。かっこいいですね。
また、このファイルシステムは複数のユーザーが個別にマウントできますが、同時にはマウントできません。 、つまり、次のユーザーがマウントできるようにするには、前のユーザーがこのファイルシステムをアンマウントする必要があります。または、ユーザーごとに個別のファイル システムを作成することもできます。
マウントするには:
mount /mnt/ramfs/
アンマウントするには:
umount /mnt/ramfs/
追記rsync
しようとしている場合 root 以外のユーザーとして新しくマウント/作成された ramfs のルートにファイルを追加すると、rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
に直面する可能性があります。 エラー。ユーザーはRAMファイルシステムのルートを所有していないため、これは完全に正常であり、予期されています。解決策は簡単です。そこにディレクトリ /mnt/ramfs/copied/
を作成するだけです たとえば、rsync
P.P.S. Debian 9 でテスト済み。Ubuntu でも動作することは間違いありません。
P.P.P.S.はるかに安全ですが、RAM ベースのストレージは依然として脆弱です コールド ブート攻撃のような手の込んだ攻撃に。したがって、データのセキュリティについて真剣に考えている場合は、物理的に PC/ラップトップを保護し、ケースとメモリー スティックをロックします。または、RAM がマザーボードにはんだ付けされたコンピューターを使用することを検討してください (これは、ほとんどの上位層のウルトラポータブル ラップトップの場合です)。また、今後 1 時間ほど使用しない場合は、コンピュータを完全にシャットダウンすることを検討してください。たぶん、スリープ/休止機能を完全に無効にすることさえあります.
お使いのシステムには、すでに利用可能なものがあるかもしれません。最近の Glibc ベースの Linux システムでは、常に tmpfs が /dev/shm
にマウントされています。 .
システムにそれがないか小さすぎる場合、root によってマウントされていないファイルシステムはほとんど FUSE を意味します。 Ubuntu では、fuse
にいる必要があります。 FUSE を使用するグループ。利用可能な FUSE ファイルシステムを調べると、残念ながら上流で放棄された Ramfuse しか見つかりません。