Fab*_*bry 55 filenames ecryptfs synology
我是一个新的 eCryptfs 用户,我有一个非常基本的问题,我在任何地方都找不到。我对通过使用 Linux 的 Synology NAS 使用 eCryptfs 感兴趣。
在尝试通过 Synology 的加密应用程序 (eCryptfs) 加密我的文件夹 (EXT4) 时,我遇到错误,指出我的文件名长度不能超过 45 个字符(因此,没有加密)。
如果限制真的是 45 个字符,那么 eCryptfs 可能不是大多数人可用的工具。
使用 eCryptfs 加密文件和文件夹时允许的最大文件名大小是多少?Linux 是 255 个字符吗?
Dus*_*and 88
完全披露:我是 eCryptfs 用户空间实用程序的作者之一和当前维护者。
好问题!
对于大多数文件系统(包括 EXT4),Linux 的最大文件名长度为 255 个字符,最大路径为 4096 个字符。
eCryptfs是一个分层的文件系统。它堆叠在另一个文件系统(例如 EXT4)之上,后者实际上用于将数据写入磁盘。eCryptfs 总是加密文件内容,但它可以选择加密(隐藏)文件名(或不加密)。
如果文件名未加密,那么您可以安全地写入最多 255 个字符的文件名并加密其内容,因为写入较低文件系统的文件名将简单匹配。虽然攻击者无法读取index.html
或的内容budget.xls
,但他们会知道存在哪些文件名。这可能(也可能不会)泄漏敏感信息,具体取决于您的用例。
如果文件名被加密,事情会变得有点复杂。eCryptfs 在加密文件名的前面添加了一些数据,以便它可以明确地识别加密文件名。此外,加密本身涉及“填充”文件名。
例如,我有一个加密文件~/.bashrc
. 这个文件名是用我的密钥加密的:
/home/kirkland/.Private/ECRYPTFS_FNEK_ENCRYPTED.dWek2i3.WxXtwxzQdkM23hiYK757lNI7Ydf0xqZ1LpDovrdnruDb1-5l67.EU--
Run Code Online (Sandbox Code Playgroud)
显然,该 7 个字符的文件名现在需要超过 7 个字符才能加密。根据经验,我们发现超过 143 个字符的字符文件名开始需要超过 255 个字符来加密。因此,我们(作为 eCryptfs 上游开发人员)通常建议您将文件名限制为 ~140 个字符。
现在,综上所述,Synology NAS 是一种商业产品,它嵌入并使用 eCryptfs 和 Linux 来加密和保护设备上的数据。我们(eCryptfs的上游开发者)无关使用Synology或他们的产品,但我们一般高兴地看到使用eCryptfs在野外。在我看来,他们推荐的 45 个字符要么是印刷错误(来自我们的 140 个字符的推荐),要么只是一个更为保守的估计。
小智 12
这个线程非常有趣,因为我想知道完全相同的事情。如果文件名需要为 140 个字符或更少,我可以忍受必须重命名 50 000 个文件中的 20 个文件,但 45 个或更少是不可行的(在我的情况下),因为它需要我重命名太多文件。
我直接向 Synology 提出了完全相同的问题(甚至将他们指向了本文),他们的回答很有趣:“加密共享的文件名限制为 143 个字节。最多可以是 140 个纯拉丁字符或 45 个 CJK(中文、日语和韩语)字符。”
按照这个答案,我对自己进行了更多测试,测试了 45、46、140、143 和 144 个字符的文件。我的测试表明最多 143 个字符(不是字节,与 Synology 告诉我的相反)的文件将被加密,但具有 144 个字符的文件将阻止文件夹被加密。但是,我从 NAS 收到的错误消息是文件名需要少于 45 个字符(而实际情况是它应该少于 144 个字符)。
我没有用 CJK 字符进行测试......但是,对于阅读本文的任何人来说,似乎在 143 个字符之前你都可以,不管系统告诉你什么。
小智 10
我想澄清一下,linux 每个文件名有 255 个字节的限制,而不是 255 个字符。这是一个显着的区别,如果您使用例如 UTF-8 编码,您可能会得到最多 100 个字符的文件名。