web-dev-qa-db-ja.com

EncFSを使用してファイルを暗号化し、特定のユーザーまたはプロセスがファイルにアクセスできるようにしますが、rootはアクセスできません

暗号化されたファイルシステムにアクセスしたいプロセスがあります。これはEncFSで行うのは非常に簡単ですが、これには暗号化されたファイルシステムをマウントするユーザーが必要です。したがって、マウントするユーザーにアクセスできるすべてのユーザーにデータへのアクセスを許可します。ルート。

プロセスにファイルシステムをマウントさせて、プロセスだけがデータにアクセスできるようにすることは可能ですか?そうでない場合、パスフレーズを知らない人がデータにアクセスするのを防ぐ別の方法はありますか?

4
Jomasi

Gillesが言ったことは正しいです、rootがマウントにアクセスするのを防ぐことはできません。マウントに直接アクセスできない場合があります(ヒューズなしallow_otherオプション)、ただし、いつでもそのユーザーに切り替えることができます。

ただし、プロセスが現在の作業ディレクトリをマウントポイントに変更した後、マウントをレイジーアンマウントすることができます。プロセスがマウントポイント内に入ると、レイジーアンマウントを実行できます。これにより、新しいプロセスがマウントポイントにアクセスできなくなりますが、マウントポイント内で実行されていたプロセスは引き続きアクセスできます。


encfs /enc/source /enc/target
( cd /enc/target && some_long_running_process) &
fusermount -uz /enc/target

some_long_running_process、およびそれが生成する子プロセスは、マウントポイントに完全にアクセスできます。ただし、そのプロセスの子ではないものがマウントにアクセスしようとすると、空のディレクトリが取得されます。


マウントポイントを使用できる短いウィンドウがあり、他の何かがディレクトリをそこに変更できますが、スクリプト化されている場合、ウィンドウは非常に小さいことに注意してください。

また、rootがマウントポイントにアクセスする方法はまだいくつかありますが、それらは単純ではなく、非常にハックです。

3
Patrick

このQ&Aのタイトルによると: アクセスが拒否されたencfs 特定のユーザーがマウントを行った場合、rootでさえEncFSにアクセスできないようです。

抜粋

しかし、通常のユーザーを使用して暗号化されたディレクトリをマウントし、Sudoを使用してrootでマウントされたファイルを表示しようとしているようです。それは機能せず、encfsの要点です。

あなたの例では、ディレクトリcrはencfsによって使用されるストレージです。この内容は大きな秘密ではなく、暗号化されたデータです。このデータをmnにマウントしているので、その内容をmnの下のファイルとして人間が読める形式で見ることができます。

Crをマウントするユーザーのみが、mnの内部を読み取ることができます。ルートでさえできません。

しかし、より精通したユーザーにとっては、rootがsu - <user>を実行してそのユーザーになることを妨げるものは何もないので、マウントされたEncFS共有にアクセスできます。

このサイトで何度も言われているように、rootがシステムのローカルなものにアクセスするのを防ぐためにできることは何もありません。それがシステムの仕組みです。 Windowsシステムの管理者についても同じことが言えます。

2
slm

マウントしているユーザーのみがencfsファイルシステムにアクセスできます。ルートとして実行されているプロセスでさえ、「許可が拒否されました」というエラーが発生します。もちろん、マウントユーザーに切り替えて、データにアクセスすることもできます。

ルートがデータにアクセスできないようにすることはできません。定義上、rootはすべての機能を備えており、すべてにアクセスできます。ルートがファイルにアクセスするのを防ぐことは、神/サンタ/あなたの両親/…¹が昨夜何をしたかを知るのを防ぐこと以上にできません。ユーザーを信頼しない場合は、rootとしてコマンドを実行する権限をユーザーに与えないでください。

¹ 該当する方を選択してください。