web-dev-qa-db-ja.com

eCryptfsで許容されるファイル名(およびフォルダー)の最大サイズはいくつですか?

私は新しいeCryptfsユーザーであり、どこにも見つからなかったという非常に基本的な質問があります。 SynologyからeCryptfsを使用することに興味がありますNAS Linuxを使用しています。

Synologyの暗号化アプリ(eCryptfs)を使用してフォルダ(EXT4)を暗号化しようとすると、ファイル名の長さが45文字を超えることができない(つまり、暗号化しない)というエラーが発生します。

制限が本当に45文字である場合、eCryptfsはほとんどの場合使用可能なツールではない可能性があります。

ECryptfsでファイルとフォルダーを暗号化するときに許可される最大ファイル名サイズはいくつですか? Linuxは255文字ですか?

47
Fabry

完全な開示:私はeCryptfsユーザースペースユーティリティの作成者の1人であり、現在のメンテナーです

すばらしい質問です。

Linuxのファイル名の最大長は、ほとんどのファイルシステム(EXT4を含む)で255文字であり、最大パスは4096文字です。

eCryptfs は階層化ファイルシステムです。これは、実際にデータをディスクに書き込むために使用されるEXT4などの別のファイルシステムの上にスタックします。 eCryptfsは常にファイルの内容を暗号化しますが、オプションでファイル名を暗号化(あいまい化)することもできます(そうでない場合もあります)。

ファイル名が暗号化されていない場合、下位のファイルシステムに書き込まれるファイル名は単純に一致するため、255文字までのファイル名を安全に書き込んで内容を暗号化できます。攻撃者はindex.htmlまたはbudget.xlsの内容を読み取ることはできませんが、存在するファイル名を知っています。ユースケースによっては、機密情報が漏えいする場合とそうでない場合があります。

ファイル名が暗号化されている場合、状況は少し複雑になります。 eCryptfsは、暗号化されたファイル名を明確に識別できるように、暗号化されたファイル名の前に少しのデータを付加します。また、暗号化自体には、ファイル名の「埋め込み」が含まれます。

たとえば、暗号化されたファイル~/.bashrcがあります。このファイル名は、私のキーを使用して暗号化されています。

/home/kirkland/.Private/ECRYPTFS_FNEK_ENCRYPTED.dWek2i3.WxXtwxzQdkM23hiYK757lNI7Ydf0xqZ1LpDovrdnruDb1-5l67.EU--

明らかに、その7文字のファイル名は、暗号化するために7文字を超える必要があります。経験的に、143文字より長い文字ファイル名は、暗号化に255文字を超える必要があることがわかりました。したがって、私たちは(eCryptfsの上流開発者として)通常、ファイル名を最大140文字に制限することをお勧めします。

さて、すべてのことを言いましたが、 Synology NASはeCryptfsとLinuxを組み込み、使用してデバイス上のデータを暗号化および保護する商用製品です。私たち(上流開発者eCryptfsの使用)はSynologyやその製品とは関係ありませんが、eCryptfsが使用されていることは一般的に満足しています 実際に 。推奨される45文字は誤植(私たちの140文字の推奨から)、または単にはるかに保守的な見積もりです。

77
Dustin Kirkland

私はまったく同じことを考えていたので、このスレッドは非常に興味深いものです。ファイル名を140文字以下にする必要がある場合は、50 000のうち20ファイルの名前を変更する必要がありますが、あまりにも多くのファイルの名前を変更する必要があるため、45以下は(私の状況では)実行できません。

私はまったく同じ質問をSynologyに直接(そして、現在の記事を指しても)尋ねましたが、それらの回答は興味深いものでした。「暗号化された共有のファイル名の制限は143バイトです。最大140の純粋なラテン文字または45 CJK(中国語、日本語、韓国語)の文字。」

この回答に続いて、45、46、140、143、144文字のファイルを使用してテストを行いました。私のテストでは、143文字までのファイル(Synologyの指示とは異なり、バイトではない)が暗号化されることが示されていますが、144文字のファイルはフォルダーの暗号化を防止します。ただし、NAS=から取得するエラーメッセージは、ファイル名を45文字未満にする必要があることです(実際には、144文字未満にする必要があります)。

私はCJK文字でテストをしませんでした...しかし、これを読んでいる誰にとっても、システムがあなたに言っていることにもかかわらず、143文字までは問題ないようです。

11
sdasdrewr

明確にしたいのですが、Linuxにはファイル名あたり255バイトの制限があり、255文字ではありません。これは大きな違いです。 UTF-8エンコードでは、最大100文字のファイル名になる可能性があります。

8
Richard Jelinek

Ecryptのファイル名の長さは、長いファイル名をサポートするためにホームディレクトリの特定のサブツリーを必要とするという点で私にとってのみの問題でしたが、最終的に、ファイル内にファイルシステムを作成してマウントできることに気付きました。

dd if=/dev/zero of=/home/me/.some.img bs=1024 count=1024
mkfs.ext3 /home/me/.some.img
chmod 777 /home/me/longfilenames
Sudo mount /home/me/.some.img /home/me/longfilenames

おそらくこれにはあらゆる種類の効率の問題がありますが、ファイルが自分のローカル目的のために定期的に作成されたテスト結果である私の場合には十分です。

私の同僚は自分のイメージを/ tmpに入れました-テストデータは特に機密情報ではありません。テスト結果ではなく、主にソースコードを保護する必要があります。

1
android.weasel