暗号化されたファイル システムにアクセスしたいプロセスがあります。これは EncFS を使用すると非常に簡単に実行できますが、ユーザーが暗号化されたファイル システムをマウントする必要があるため、マウント ユーザーにアクセスできるすべてのユーザー (例: root) にデータへのアクセス権が与えられます。
プロセスにファイル システムをマウントさせて、そのプロセスだけがデータにアクセスできるようにすることは可能ですか? できない場合、パスフレーズを知らないユーザーがデータにアクセスできないようにする別の方法はありますか?
答え1
Gilles の言うことは正しいです。ルートがマウントにアクセスするのを防ぐことはできません。マウントに直接アクセスできない可能性があります (fuseallow_other
オプションなし) が、常にそのユーザーに切り替えることができます。
しかしプロセスが現在の作業ディレクトリをマウント ポイントに変更した後、マウントを遅延アンマウントすることができます。プロセスがマウント ポイント内に入ったら、遅延アンマウントを行うことができます。これにより、新しいプロセスがマウント ポイントにアクセスできなくなりますが、マウント ポイント内で実行されていたプロセスは引き続きアクセスできます。
例
encfs /enc/source /enc/target
( cd /enc/target && some_long_running_process) &
fusermount -uz /enc/target
some_long_running_process
、そしてそこから生成されたすべての子プロセスはマウント ポイントへの完全なアクセス権を持ちます。ただし、そのプロセスの子以外のプロセスがマウントにアクセスしようとすると、空のディレクトリが取得されるだけです。
マウント ポイントが使用可能で、その間に他の何かがディレクトリをそのマウント ポイントに変更できる短いウィンドウがあることに注意してください。ただし、スクリプト化されている場合、そのウィンドウは非常に小さくなります。
また、ルートがマウントポイントにアクセスできる方法がまだいくつかありますが、それらは単純ではなく、とてもハックっぽい。
答え2
encfs ファイルシステムにアクセスできるのはマウント ユーザーだけです。root として実行されているプロセスでも「権限が拒否されました」というエラーが発生しますが、もちろんマウント ユーザーに切り替えてデータにアクセスすることもできます。
ルートがデータにアクセスできないようにすることは不可能です。定義上、ルートは全能であり、すべてのものにアクセスできます。ルートがファイルにアクセスするのを防ぐことは、神様/サンタ/両親/…¹ があなたが昨日の夜に何をしたかを知るのを防ぐことと同じくらい不可能です。ユーザーを信頼できない場合は、ルートとしてコマンドを実行する権限を付与しないでください。
¹該当するものを選択してください。
答え3
さて、このQ&Aによると、予想されるアクセスが拒否された encfs特定のユーザーがマウントした場合、root でも EncFS にアクセスできないようです。
抜粋
しかし、暗号化されたディレクトリをマウントするために通常のユーザーを使用し、その後、sudo を使用して root でマウントされたファイルを表示しようとしているようです。これは機能しませんが、これが encfs の全体的なポイントです。
この例では、ディレクトリ cr は encfs によって使用されるストレージです。この内容は大きな秘密ではなく、暗号化されたデータです。このデータを mn にマウントして、その内容を mn の下のファイルとして人間が読める形式で表示できるようにします。
cr をマウントしたユーザーだけが mn 内の内容を読み取ることができます。root でも読み取りできません。
su - <user>
しかし、より知識のあるユーザーにとっては、マウントされた EncFS 共有にアクセスできるように、root で を実行してそのユーザーになることを妨げるものは何もありません。
このサイトでも何度も述べられているように、システムのローカルにあるものすべてにルートがアクセスするのを阻止することはできません。それがシステムの仕組みなのです。Windows システムの管理者についても同じことが言えます。