/ Tmp'yi farklı bir birime (güvenli bir şekilde) nasıl taşıyabilirim?


17

Bugün /tmpdizin iş yerinde bir makineyi doldurdu. Sorun şuydu, kök bölümünde çok büyük değildi. Bunu düzeltmek için, bir iş arkadaşı /new/tmpbaşka bir yerde bir dizin oluşturdu , tüm içeriği yeni dizine kopyaladı, orijinali kaldırdı /tmpve bir sembolik bağlantı yaptı /tmp -> /new/tmp.

Dosyaları kopyaladığında (gerçekten, bu ben değil başka birisiydi!) Kullanmadı, bu -ayüzden altındaki her dosyanın sahibi /new/tmpyoktu root. Ayrıca, /new/tmpdizinin izinlerini ayarlamamıştır, bu nedenle varsayılan 0755'tir. Bu, sorunun sonu olmamasına ve hatta modun ve sahiplik bitlerinin makineyi kabul edilebilir bir şekilde geri yükleyemedi. Ben her şeyi nuke /tmpve yeniden başlatmak zorunda kaldı .

/tmpBir grup insan VNC üzerinden Gnome çalıştırmak beri dizin, çeşitli prizler ve boruları ve etajer içeriyordu ve kullandığım screenkendi borularını olan.

Bir dizini çalışan bir sistemde farklı bir birime taşımanın güvenli bir yolu var mı /tmp? Herşeyi işler halde tutmak için gerçekte ne yapacağımdan emin değilim. Özellikle borulara ve soketlere ne olduğunu merak ediyorum.

Yanıtlar:


20

“İstemci” makinelerde, taşınmanın güvenli yolu /tmpyeniden başlatmaktır. Burada, istemci tarafından, /tmpözellikle X sunucuları ve ekran gibi soketleri yerleştiren programları çalıştıran herhangi bir şey kastediyorum .

Yeni /tmpkesinlikle doğru izinlere sahip olmalı (1777), aksi takdirde bir çalışma sistemine sahip olmayı ümit edemezsiniz.

Çünkü /tmphiçbir dosyayı kopyalayamazsınız. Çünkü çoğu zaman bir şeyler yerleştiren programlar /tmpdosyaları açar. Dosyayı kopyalarsanız, bu içerik kopyalanır, ancak programların hala eski dosyaları açıktır. Bunlara bir hata ayıklayıcı ( ptrace) ile erişebilirsiniz , ancak bu yeniden başlatmadan çok daha karmaşık olacaktır ve birçok programda tek yapmanız gereken onları çökmek.

Bilgisayarınız /tmpdoluysa ve yeni bir tanesine canlı olarak geçmek istiyorsanız, orada açık dosyaları olan tüm programları yeniden başlatmanız gerekir. Bu, X ve ekran oturumlarını yeniden başlatmak anlamına geldiğinden, yeniden başlatmaktan daha iyi değil.

Yeni programlar arasında geçiş yapabilmeniz, ancak birleşik bağlama aparatı kullanarak mevcut açık dosyaları yerinde tutmanız gerekir . (Prensip sağlam, ama hiç denemedim, bu yüzden beklenmedik sorunlar olabilir.) İşte bunu Linux'ta yapmanın bir yolu.

  1. /tmpManuel olarak seçilen birkaç büyük dosya dışında mevcut tüm dosyaları saklayın .
  2. Bir /tmp.new(mod 1777) oluşturun.
  3. Açığa /tmpFarklı yolda: mount --bind / /.root.only. Bu gereklidir çünkü bir sonraki adım gölgelenir /tmp. Bu adımı gerektirmeyen farklı sendika montajı uygulamaları olabilir.
  4. Birlik montajı yapın /.root.only/tmpve /tmp.newüzerine monte edin /tmp. Bu şekilde oluşturulan yeni dosyalar /tmpyazılacak /tmp.new, ancak içindeki dosyalar /.root.only/tmpda görülebilir /tmp. Bir olasılık olduğunu unionfs-sigorta : unionfs-fuse /tmp.new:/.root.only/tmp /tmp.

Union mount köküne gitmek istemiyorsanız (örneğin, platformunuzda bulunmadığı veya çok fazla sorun olduğu için), en azından eski dizini silmeyin. Çalışan programları eski dizini kullanmaya devam etmek ve yeni programlar yenisini kullanmak için taşıyın . (Tabii yeni programlarda Of içinde yuva veya boru aracılığıyla eski programlarla iletişim mümkün olmayacaktır /tmpayarladığınız sürece TMPDIRveya başka nereye bakacağını onlara.)

mv /tmp /tmp.old && mkdir /tmp

/ Tmp dosyasının yeni konumunun yeniden başlatma yoluyla nasıl kalıcı hale getirileceğini açıklar mısınız?
FoxDeploy

@FoxDeploy Bunun için bir giriş yapın/etc/fstab
Gilles 'SO- kötü olmayı bırak'

Muhtemelen bunu biraz açıklayabilir misiniz?
FoxDeploy

@FoxDeploy Burada ne istediğinden emin değilim. /tmpKök dosya sisteminden başka bir yerde olmak istiyorsanız /etc/fstab, tıpkı önyükleme zamanında monte etmek istediğiniz diğer dosya sistemleri gibi bunu listeleyin . Sorduğunuz şey bu değilse, yeterli bağlamda yeni bir soru sormalısınız.
Gilles 'SO- kötü olmayı bırak'
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.