ディストリビューションは、2.6.35-30 Linuxカーネルを実行しているUbuntuサーバーです。
完全にメモリ内にあるディレクトリが欲しいのですが。 root権限がなくても可能ですか?
Linuxは、任意のユーザーが使用できるtmpfsデバイス/dev/shm
を提供します。デフォルトでは特定のディレクトリにマウントされていませんが、引き続き1つのディレクトリとして使用できます。
単に/dev/shm
にディレクトリを作成し、それを好きな場所にシンボリックリンクします。作成したディレクトリに任意のアクセス許可を付与して、他のユーザーがアクセスできないようにすることができます。
これはRAMバックアップデバイスなので、デフォルトではメモリ内に何があります。/dev/shm
内に必要なディレクトリを作成できます
当然、ここに配置されたファイルは再起動後も存続しません。マシンがスワッピングを開始した場合、/dev/shm
は役に立ちません。
/dev/shm
に対応するSolarisは/tmp
で、これは「スワップ」タイプのパーティションであり、メモリベースでもあります。 /dev/shm
と同様に、Solarisでは任意のユーザーが/tmp
にファイルを作成する可能性があります。
OpenBSDには、メモリベースのマウントを使用する機能もありますが、デフォルトでは使用できません。 mount_mfsコマンドは、スーパーユーザーが使用できます。
他の* BSDについてはわかりません。
...アクティブなシステム スワップ !可能性は非常に高いお使いのコンピュータで有効になっています。
より良いsecureの標準的な代替手段— ramfs
があります。 RAMでバックアップされたスペースを使用してtemporary秘密キー、ビットコインなどの機密データを保存する場合は、ramfs
を使用することができますまたはEthereumウォレットなど。
ramfs
データneverがスワップされるため、セキュリティが懸念される場合、tmpfs
はramfs
よりも優れています(物理ストレージドライブに保存されます)、tmpfs
mayがスワップされます。その後、サードパーティはスワップスペースを検査でき、機密データを抽出できます。
ramfs
マウントを準備して、非特権ユーザーがオンデマンドでマウント/アンマウントできるようにすることができます。
これを行うには、root特権、once特権が必要です。 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ベースのファイルシステムはvanishでallそのデータ。かっこいいです。
また、このファイルシステムは複数のユーザーが個別にマウントできますが、同時にはできません、つまり次のユーザー、前のユーザーがマウントできるようにしますこのファイルシステムをアンマウントする必要があります。
マウントする:
_mount /mnt/ramfs/
_
アンマウントするには:
_umount /mnt/ramfs/
_
追伸root以外のユーザーとして新しくマウントまたは作成されたramfsのルートにrsync
ファイルを保存しようとすると、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がマザーボードに直接はんだ付けされているコンピューターを使用することを検討してください(ほとんどの上位層のウルトラポータブルラップトップの場合です)。また、意図しない場合はコンピューターを完全にシャットダウンすることを検討してください。スリープ/ハイバネーション機能を完全に無効にすることさえできるかもしれません。
ご使用のシステムには、すでに使用可能なものがある可能性があります。 Glibcに基づく最近のLinuxシステムは常に tmpfsを/dev/shm
にマウントします 。
システムにファイルシステムがないか、またはシステムが小さすぎる場合、ルートによってマウントされていないファイルシステムは、ほとんど Fuse を意味します。 UbuntuでFuseを使用するには、Fuse
グループに属している必要があります。 利用可能なFuseファイルシステム を見ると、残念ながら上流に捨てられている Ramfuse のみが表示されます。
一般に、ファイルシステムはルートによってのみマウントできます。ユーザーがファイルシステムを任意に配置できるようにする場合、それは本質的にユーザーにルートを与えることになります。 (簡単な方法:/ etcに1つマウントし、そこに独自のpasswdとshadowを置き、作成した新しいrootパスワードでsuを実行し、マウントを解除します)
特定の場所にtmpfsが必要な場合は、/etc/fstab
のフラグを使用してnoauto,user
に追加すると、ユーザーはそれをマウントできるようになります(ただし、その理由は特に明確ではありません) t自動マウントするだけです)
ユーザーが任意のtmpfsを必要とする場合、いくつかのオプションがあります。
Sudo
を使用して、ユーザーが実行できるようにします。必ずnotを実行して、ユーザーが任意のパスを選択できるようにします。