Tembel MNT_DETACH veya `umount -l` neden güvensiz / tehlikeli?


10

umount -lGüvenli olmayan birkaç yerde okudum :

@Cas tarafından verilen bir cevapta :

harici sürücünün ne zaman güvenli bir şekilde çıkarılabileceğini önemsiyorsanız umount' --lazyseçeneğini kullanmayın

@Frostschutz tarafından yapılan bir yorum :

umount --lazygüvenli değildir ve güvenli hale getirilemez. [...]

util-linux Ruediger Meier tarafından yapılan bu yorum :

Hiç kullanmaktan kaçınmalısınız umount -l. Sadece kullanılan tüm işlemleri öldürün /tmp/mountpointve sonra seçenek olmadan umount -l.

Neden umount -lgüvensiz / tehlikelidir?

Güvenli hale getirmenin bir yolu var mı?

Yanıtlar:


12

Tembel bir ayırma, Schrödinger'in kedi yuvasını yaratır

  • Cihazın gerçekten sökülmüş olup olmadığını bilemezsiniz
  • "Monte edilmemiş" dosya sistemi bazı durumlarda erişilebilir durumda kalır
  • "Kaldırılan" dosya sistemi değil bazı durumlarda erişilebilir

Yanlış bir güvenlik duygusu var : Dosya sisteminin bağlantısı kesilmiş gibi görünüyor, ancak gerçekte sadece dosya ad alanından / heirarchy'den gizlendi.

  • İşlemler yine de açık dosya tanımlayıcıları ile yazabilir
  • Yeni veya mevcut dosyalar, bağıl yol adları aracılığıyla bağlama noktasının içinde çalışan bir dizini olan işlemlerle yazmak için açılabilir

Bu, umount -l /media/hddartık erişemeyeceğiniz anlamına gelirse /media/hdd/dir/file(mutlak yol adı), ancak çalışma dizinine sahip bir işleminiz /media/hddvarsa, yine de okuyabilen / yazabilen yeni işlemler oluşturabilecektir ./dir/file(göreceli yol adı).

Cihazı çıkarmaya çalışırsanız, kafa karıştırıcı bir mesaj alırsınız:

# umount --force --all-targets /dev/sdb2
umount: /dev/sdb2: not mounted

Bu, aygıtın sayılmamış gibi görünmesini sağlar, ancak yine de diske yazma işlemleri olabilir.

Umount'un engellenmesine neden olabilecek çeşitli belirgin olmayan durumlar olduğundanlsof +f -- /dev/device , hiçbir şey göstermese bile dosya sistemi hala sökülmeyebilir .

Dosya sisteminin gerçekten kaldırılıp çıkarılmadığını asla bilemezsiniz. Öğrenmenin bir yolu yok.

Çıkarılabilir aygıtlar

Bunu yaparsanız umount -lçıkarılabilir diski, sen belirsizlik-arazi demektir: Eğer tüm bekleyen veri diske yazılır olduğundan emin olamaz.

Bir sonra yapabileceğiniz en iyi umount -lolmaktır tüm yazı tamamlanana sağlamak ve gelecekteki yazılı önlemek , ama yine de zaten ayrılmıştı garanti edemeyiz.

Çıkarılabilir aygıtlarda, aygıt düzgün bir şekilde çıkarılmazsa, bir dahaki sefere takıldığında garip davranışlar ortaya çıkabilir:

  • Cihaz, artan bir cihaz adı alacaktır, yani /dev/sdbolur /dev/sdc. Çekirdek günlük iletileri, /dev/sdbbu aygıt artık altında bir dosya olarak bulunmamasına rağmen yine de başvuruda bulunabilir /dev. (Bunu çözmeyi bildiğim tek yol yeniden başlatmaktır.)

  • btrfs bozulması yol açabilir. btrfs, belirli bir UUID'ye sahip yalnızca bir dosya sisteminin aynı anda bulunmasını bekler. Çekirdek hala hayali aygıtta ve yeni aygıtta kullanılabilen aynı UUID'yi görüyor. (Btrfs yedek HDD'imi yeniden oluşturmak zorunda kaldım).

systemd FRİKİKLERİNDEN


"Yeni veya mevcut dosyalar, bağlanma noktasının içinde çalışma dizinine sahip işlemler tarafından göreli yol adları aracılığıyla yazmak için açılabilir." Bu aradığım bilgidir. Başka bağlantınız veya referansınız var mı?
Jonathon Reinhart

@Jonathon kontrol adam umount. Aksi takdirde google'a ihtiyacım var. Bunu yaparsanız lütfen bulgularınızı gönderin.
Tom Hale

umount(2)Son zamanlarda birkaç kez okudum . Yalnızca "Tembel bir bağlantı kesme gerçekleştirin: yeni erişim için bağlama noktasını kullanılamaz hale getirin, hemen dosya sistemini ve altına monte edilen tüm dosya sistemlerini birbirinden ve bağlama tablosundan çıkarın ve bağlama noktası meşgul olduğunda bağlantıyı kesin ." Ancak ne yazık ki bu, sağladığınızdan daha az ayrıntı.
Jonathon Reinhart

umount(8)bir dosya sisteminin meşgul olduğunu söylüyor "örneğin, üzerinde açık dosyalar olduğunda veya bir işlemin çalışma dizini orada olduğunda veya üzerinde bir takas dosyası kullanıldığında." Bu kesin bir liste gibi gelmiyor, ama muhtemelen bulabileceğim kadar iyi.
Jonathon Reinhart

Söylediklerinize biraz özen gösterdim ve bu cevaba başka örnekler de ekledim . Bilgi için teşekkürler!
Jonathon Reinhart
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.