ECryptfs ile izin verilen maksimum dosya adı (ve klasör) boyutu nedir?


44

Yeni bir eCryptfs kullanıcısıyım ve hiçbir yerde bulamadığım çok basit bir sorum var. Linux kullanan Synology NAS'ım aracılığıyla eCryptfs kullanmakla ilgileniyorum.

Klasörümü (EXT4) Synology'nin şifreleme uygulaması (eCryptfs) ile şifrelemeye çalışırken Dosya adımın uzunluğunun 45 karakterden uzun olamayacağını (bu nedenle şifreleme yok) belirten hatalarla karşılaşıyorum.

Eğer limit gerçekten 45 karakter ise, eCryptfs çoğu kullanıcı için kullanışlı bir araç olmayabilir.

ECryptfs ile dosya ve klasörleri şifrelemek için izin verilen maksimum dosya adı boyutu nedir? Linux 255 karakter mi?


6
Yani, ecryptfs dosya isimlerini şifrelemek gibi bir şey saçma. Öncelikle "ECRYPTFS_FNEK_ENCRYPTED." Adlı sabit bir dize hazırlayarak 20 bayttan daha fazlasını verir. her dosya adına. Sonra aynı adları farklı görünmesi için çok fazla rastgele bayt yolu hazırlar. EncFS, bunu çok daha verimli bir şekilde yapar.

Yanıtlar:


70

Tam açıklama: Ben eCryptfs kullanıcı alanı programlarının yazarlarından ve mevcut koruyucusuyum.

Harika soru!

Linux, çoğu dosya sistemi (EXT4 dahil) için maksimum dosya adı uzunluğu 255 karakter ve maksimum 4096 karakter yolu içerir.

eCryptfs katmanlı bir dosya sistemidir. Diske veri yazmak için kullanılan EXT4 gibi başka bir dosya sisteminin üzerine yığınlanır. eCryptfs her zaman dosya içeriğini şifreler, ancak isteğe bağlı olarak dosya adlarını şifreleyebilir (gizleyemez).

Dosya adları şifrelenmemişse, daha sonra en az 255 karakterlik dosya adlarını güvenle yazabilir ve alt dosya sistemine yazılan dosya adlarının eşleşeceği şekilde içeriklerini şifreleyebilirsiniz. Bir saldırgan, içeriğini okuyamazken index.htmlveya budget.xlshangi dosya adlarının bulunduğunu bilir. Bu, kullanım durumunuza bağlı olarak hassas bilgileri sızdırabilir (veya olmayabilir).

Dosya adları şifrelenmişse işler biraz daha karmaşıklaşır. eCryptfs, şifrelenmiş dosya adlarını kesin olarak tanımlayabilmesi için şifrelenmiş dosya adının önünde bir miktar veri hazırlar. Ayrıca, şifrelemenin kendisi dosya adının "doldurulmasını" içerir.

Mesela şifreli bir dosyam var ~/.bashrc. Bu dosya adı anahtarımı kullanarak şifrelenir:

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

Açıkçası, bu 7 karakter dosya adının şimdi şifrelenmesi için 7'den fazla karakter gerekiyor. Ampirik olarak, 143 karakterden daha uzun olan karakter dosya adlarının> 255 karakterin şifrelenmesini gerektirdiğini belirledik. Bu yüzden biz (eCryptfs upstream geliştiricileri olarak) genellikle dosya isimlerinizi ~ 140 karakter ile sınırlamanızı tavsiye ederiz.

Şimdi söylenenler, Synology NAS, cihazdaki verileri şifrelemek ve güvenceye almak için eCryptfs ve Linux kullanan ve kullanan ticari bir ürün. Biz (eCryptfs'lerin akış yukarı geliştiricileri) Synology ya da ürünleri ile hiçbir ilgimiz yok, ancak genelde vahşi doğada kullanılan eCryptfs'leri görmekten mutlu oluruz . Bana göre 45 karakter önerileri ya yazım hatası (140 karakter önerimizden) ya da sadece çok daha tutucu bir tahmin.


Kendi "çok uzun dosya isimleri" ni çözen ve sadece proxy 1: 1'i altta yatan dosya sistemiyle dinleyen FUSE bindirme sistemini gerçekten görmeyi çok isterim. Bu tür FUSE fs, farklı dosya sistemleri (ecryptfs, EncFS) için faydalı olurken, şu anda desteklenen dosya isimleri hiçbir şeyi değiştirmez. Ve yine, isteğe bağlı olacaktır. - Dileğim
Grzegorz Wierzowiecki

17
Bu cevap tamamen doğru değil. Bir dosya adının maksimum boyutu 255 Bayt veya C / C ++ karakter türüdür. Ancak bir dosya adındaki en fazla karakter değişebilir. Çoğu sistem için varsayılan olan UTF-8 kullanılırken, UTF-16, 63-127 kullanılıyorsa, dosya adı 63-255 karakter (aka Kod Noktaları) arasında olabilir. Unutulmaması gereken, 1 karakterin depolama alanında bir veya daha fazla bayt olabileceği ve sistemin kullanıcısının kullandığı koda bağlı olmasına bağlıdır.
Rahly

Geliştiriciye öneri: Gerekli bir uzunluğu elde etmek için son kullanıcıdan gizlenen alt dizinler arasında şifrelenmiş isimleri ayırın, harici bir dosya sistemine ihtiyaç duyuyorsa, linux max isim uzunluğu sınırını bile aşabilir. Tek bir dosya veya dizin "ENCRYPTFS-01-OF-04 [.....] / ENCRYPTFS-02-OF-04 [.....] / ENCRYPTFS-03-OF-04 [..... ] / ENCRYPTFS-04-OF-04 [.....] "- Linux btrfs, ext1-4 ve diğerlerinde maksimum tanımlı dizin derinliği yok, böylece dosya sistemi bu gibi birden fazla alt dizinde genişleyen dosya ve dizin adlarını işleyebilir .
Dale Mahalko

1
Önerim, dosya adı yerine xattr'lerde sakladığınız meta verileri saklamaktı. : |
Trejkaz

1
ECryptfs’in “isteğe bağlı olarak dosya adlarını şifreleyebildiğini (gizleyemeyeceğini) (veya gizleyemeyeceğini)” söylüyorsunuz. Dosya adı şifrelemesini nasıl devre dışı bırakırım, böylece tam 255 karakterli dosya isimlerimi 143 karakterle sınırlı olmak yerine geri alabilirim? Bu arada, eCryptfs'i kurduklarımın, bu arada, Ubuntu kurulumum sırasında kutuyu ya da "Şifrelenmiş ev dizini" ne olursa olsun kontrol etmem gerektiğine inanıyorum.
Gabriel Staples

11

Bu konu çok ilginç çünkü aynı şeyi merak ediyordum. Dosya adlarının 140 karakter veya daha kısa olması gerekiyorsa, 50 dosyadan 20 dosyayı yeniden adlandırmak zorunda kalarak yaşayabilirim (ancak benim durumumda) 45 veya daha az olması mümkün değil çünkü çok fazla dosyayı yeniden adlandırmamı gerektiriyor.

Tam olarak aynı soruyu doğrudan Synology'ye sordum (bu makaleye bile işaret ettim) ve cevapları ilginçti: "Şifreli paylaşımın dosya adı sınırı 143 bayttır. 140'a kadar saf Latince karakter veya 45 CJK (Çince) olabilir , Japonca ve Korece) karakterler. "

Bu cevabın ardından 45, 46, 140, 143 ve 144 karakterden oluşan dosyaları test ederek kendimi daha fazla test ettim. Testlerim, 143 karaktere kadar olan dosyaların (bayt değil, Synology'nin bana söylediklerinin aksine) şifreleneceğini, ancak 144 karakterli dosyaların şifrelenecek bir klasörü HAZIR olacağını gösteriyor. Ancak NAS'ımdan aldığım HATA MESAJI, dosya adının 45 karakterden az olması gerektiğidir (gerçekte bunun 144 karakterden az olması gerekir).

CJK karakterleriyle testler yapmadım ... Ama bunu okuyan herkes için, sistemin size söylediklerine rağmen, 143 karaktere kadar iyi olduğunuz anlaşılıyor.


7

Netleştirmek istiyorum, linux 255 karakter değil, dosya adı başına 255 bayt sınırına sahip. Bu önemli bir farktır ve örneğin UTF-8 kodlaması kullanıyorsanız, en fazla 100 karakterlik dosya isimleriyle bitebilirsiniz.


1
63, her karakter kod noktası başına 4 baytlık maksimum kodlama kullanıyorsa, maks. Bu, UTF şemalarının herhangi biri için (UTF-16 ve UTF-32)
aynıdır

@Rahly Ancak, sonunda değişebilir. Maksimum geçerli Unicode kod noktası, U+10FFFFUCS-2'nin sınırlarını (temelde yedek gruplar olmadan UTF-16) sınırlamaları karşılamak üzere azaltılmadan önce UTF-8, kodlama şekli nedeniyle 32-bit kod noktasını temsil etmek için 6 bayta kadar gerekebilir Ayrıştırma senkronizasyonunun bir bayt akışında ayrıştırmaya başladığınız yerden bağımsız olarak yeniden alınmasını sağlamak için "karakter başlangıcı" ve "karakterin devamı". Atanmamış kod noktalarından kaçtıkları için bu kararı nihayetinde geri çevirmeye karar vermeleri her zaman mümkündür.
ssokolow

1
Ama deli gibi karakterleri eklemeye başlamadıkça pek mümkün değildir. U8.0'dan itibaren sadece 120k atanmıştır. Bu yinelemeye ~ 8k karakter eklediler. Onlar devam ederse, ~ 106 sürümünde genişletilmesi gerekecek.
Rahly

Ve sanırım ikisi de UTF-16’ya güvendiklerinden, ilk önce Windows’u bir JavaScript’ten çıkarmak zorunda kalacaklar. (Bunu JavaScript'in durumunda da düzeltmek mümkün olabilir mi?)
SamB

1

Ecrypt dosyasının dosya adı uzunluğu, benim için sadece uzun bir dosya adını desteklemek için ev dizinimin belirli bir alt ağacına ihtiyaç duyduğum için bir sorun oldu ve nihayetinde bir dosya içinde bir dosya sistemi yaratabileceğimi ve onu bağlayabileceğimi farkettim:

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

Muhtemelen bununla ilgili her türlü verimlilik sorunu vardır, ancak dosyaların sadece kendi yerel amaçlarım için periyodik olarak oluşturulan test sonuçları olduğu durumum için yeterli.

Meslektaşlarım imajlarını / tmp’ya koymuşlar - test verileri özellikle gizli değil: temel olarak test sonuçlarımızı değil kaynak kodunu korumak istiyoruz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.