/ bin / etc / lib64 / root / sbin sv klasörü tarafından silindi veya taşındı / * / * su


11

İşletim Sistemi Centos 6.5 64-bit

Bir tar dosyasını indirdim ve untar'ını çıkarmak istedim mv.

Yıldız işaretini kaldırdım, sonra yanlışlıkla (kök olarak) bash mv folder/* /*yerine koştum mv folder/* ., bazı dosyaların üzerine yazılamayacağını söyledi, sonra diğerleri için izin istedi. Ctrl-c'd dışarı.

Terminal oturumunu açık bıraktım, ancak çıktım su.

Artık shellkomutların çoğuna erişimimi kaybettim , lsherhangi bir dizin yapamıyorum ve geri dönemiyorum su.

Web sunucusu ve hizmetler hala çalışıyor gibi görünüyor. Çok az komut çalıştırabilirim cd, bunlardan biri ve yapmaya çalıştığımda ya da hata cdverdiğinde ./etc/binno directory found

DÜZENLEME Sadece eksik tüm klasörleri fark /( bin, etc, lib64, root, sbin) taşındı /varDenedim, dizindeki /var/bin/su& alıyorum: -bash: /var/bin/su: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory


1
Eğer çalıştırılamıyor /var/bin/sudoğrudan?
Darkhogg

Lütfen soruyu çözümlerle düzenlemeyin. Yığın değişim ağında cevap eklemeyi tercih edersiniz, yanıtı geliştirmek için mevcut bir cevaba yorum bırakın.
Bernhard

@Darkhogg /var/bin/su: user root does not exist/ etc / var / etc adresinde olduğu için yapılamayacağını belirlediğimizi düşünüyorum
webaholik

@Bernhard düzeltmeye çalıştı
webaholik

Yanıtlar:


23

Sisteminiz busyboxyüklendiyse, bir şeyleri geri koymak için bunu kullanabilirsiniz.

busyboxiçine yerleştirilmiş birçok standart yardımcı program içeren bir ikili dosyadır. Yapılacaklar gibi mv, sh, lsvb

Pavel'in cevabı hakkındaki yorumunuzdan, her şey bitmiş gibi görünüyor /var. Yapmayı deneyebilirsiniz /var/bin/busybox mv /var/{bin,etc,lib32,lib64,root,sbin,usr} /. Bu, sisteminizin çoğunu tekrar çalışır hale getirmelidir. Olarak /tmpda var gibi birkaç dizin vardır /var/tmp, bu yüzden onları taşıyamazsınız. Umarım bunlar mvşikayet edenler ve yalnız bırakıldılar.

 

Kök kabuğu alma

Ayrıca kök kabuğunuzu kaybettiğinizi ve bunun susize bir ld-linuxkütüphane hatası verdiğini de belirttiniz . Aşağıdakileri kullanabilirsiniz:

LD_LIBRARY_PATH=/var/lib64 /var/lib64/ld-linux-x86-64.so.2 /var/bin/su

Not: Bunu denedikten sonra çalışmaz. Bunun nedeni sude birkaç dosya gerektirir /etc( passwd, pam.dve diğerleri). Eğer /etchala sağlam olduğunu, bu başarı şansının yüksek olurdu.

 

Meşgul kutusu olmadan

Meşgul kutunuz yoksa, aşağıdakilerle aynı ld-linux hilesini kullanabilirsiniz su:

LD_LIBRARY_PATH=/var/lib64 /var/lib64/ld-linux-x86-64.so.2 /var/bin/mv /var/{bin,etc,lib32,lib64,root,sbin,usr} /

 

Canlı bir CD'den

Yorumlarda tartışıldığı gibi, kök kabuğunu kaybettiyseniz, hemen hemen sıkışmışsınız demektir. Temel olarak bunu düzeltmek için kök ayrıcalıklarına ihtiyacınız var. Oraya ulaşmanın tek yolu , izinleriniz (her ikisi de bu noktada işlevsel olmayan) gibi bir yardımcı programa sahip olmak suveya sudoyükseltmek veya zaten kök olarak çalışan başka bir programı (çalışmakta olana bağlı olarak, muhtemelen mümkün değildir) kaçırmaktır.

Bu tek seçenek canlı bir CD olarak kalıyor. Canlı bir CD'ye (veya canlı USB'ye veya herhangi bir şeye) önyüklendikten sonra, kök birimini takın ve etkilenen dizinleri /varorijinal evlerine geri taşıyın /.


Olanların özeti

folder/*folder/foove gibi bir şeye genişleyecekti folder/bar.
/*gibi bir şeye genişleyecekti /bin /lib32 /lib64 /etc /home /root /var. /varSon ürün olduğuna dikkat edin .
Kabuk tüm bu küreleri genişlettiğinde, böyle bir şey çalıştırırdı:

mv folder/foo folder/bar /bin /lib32 /lib64 /etc /home /root /var

As /varlistedeki son öğedir, her şeyin içine taşındı.


Neden /var/bin/suhatalar/lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory

Linux'taki neredeyse tüm ikili dosyalar dinamik olarak birbirine bağlıdır ld-linux. ld-linuxbir ikili dosya için gerekli olan diğer kütüphanelerin yüklenmesinden sorumlu kütüphanedir. Sisteminizde bu yaşıyor /lib64/ld-linux-x86-64.so.2. Bu dizin taşındığından, dinamik olarak bağlanmış yürütülebilir dosyalar artık çalışmaz.

Meşgul kutusunun çalışmasının nedeni, meşgul kutusunun statik olarak bağlı olmasıdır. Kullanmaz ld-linux.


İyi bir fikir. CentOS genellikle initramfs nedeniyle yüklenmiş bir meşgul kutusu vardır , bu yüzden iyi çalışabilir.
Pavel Šimerda

busyboxne yazık ki yüklü değil mükemmel bir çözüm gibi geliyor, bu düzeltildikten sonra ... Bu arada, /var/lib64/ld-linux-x86-64.so.2yerine komutları yürütmek için yolu düzeltmek için yine de var /lib64/ld-linux-x86-64.so.2mı? Bu komutları öldüren şey gibi görünüyor/var/bin
webaholik

@Patrick: Lütfen OP'nin kullanmayı amaçladığı komutun yanlış olduğunu da ekleyebilir misiniz? Daha sonra cevabımı şimdi (neredeyse) gereksiz olduğu için silebilirdim. Bu arada yığın değişimini kullanmanın doğru yolu mu?
Pavel Šimerda

1
Birkaç şeyler arıyor /etchangi orada (değil /etc/passwd, /etc/nsswitch, /etc/pam.dve muhtemelen daha fazla). İçin suişe, /etc's orijinal konumuna geri olmalıdır. Etrafında bir kök kabuk yoksa, sanırım sıkışmışsın :-(
Patrick

2
@ user1296209 Bir livecd aldıktan sonra, kök birimini bağlamanız ve bu dizinleri geri taşımanız yeterlidir. Tekrar koşmak için ihtiyacınız olan her şey bu olmalı.
Patrick

10

mv folder/* ./*de yanlış. Çalıştırdığınız komutların anlambilimi konusunda daha dikkatli olmalısınız. mvİkiden fazla argüman komut sadece sonuncusu hariç tüm argüman alır ve son argüman belirtilen dizine işaret ettikleri yolları taşır.

Tüm dizinleri (gizli olanlar hariç) klasörden geçerli dizine taşımak için şunu kullanmalısınız:

mv folder/* .

Koşu sisteminizi bozdunuz. Kabuğunuz ve yerleşik komutlarınız çalışmaya devam eder. Canlı bir CD açmanız ve dizinleri geri taşımanız gerekir. Yeniden başlatmadan durumu düzeltmenize izin verecek dosyaları taşımak / yeniden adlandırmak için bir bash yerleşiminin farkında değilim, daha fazla ayrıntı için Patrick'in cevabına bakın.


Ben fark etmedim: Ben / var / bin & / var / etc cd olabilir, klasör var var taşınmış gibi görünüyor, neyse onları geri taşıyabilir? ... Livecd olmadan?
webaholik

/ Var / bin / su & get: -bash: / var / bin / su: /lib64/ld-linux-x86-64.so.2: bozuk ELF yorumlayıcısı: Böyle bir dosya veya dizin yok
webaholik

Aha ... Cevabı çözeceğim.
Pavel Šimerda

mvtüm dosya ve klasörleri klasörden geçerli dizine taşımak için ne yapmalıydım ?
webaholik

1
@ user1296209: Canlı bir sistem önyükleme yaparsanız, yaşam sisteminize kesinlikle root erişiminiz olur. Gerçek sisteminiz, canlı sistem için özel bir anlamı olmayan sadece monte edilmiş bir bölümdür. Tek komplikasyon, sizin /ve /vardizinlerinizin farklı bölümlerde olabilmesidir, bu durumda her ikisini de bağlamanız gerekir.
celtschk

2

Yanlışlıkla / usr / usr_old taşındı ve her şey cehenneme gitti. Neyse ki istemde kaldı ve usr klasörünü geri yüklemek için aşağıdaki komutu çalıştırabildim:

LD_LIBRARY_PATH=/usr_old/lib64 /usr_old/lib64/ld-linux-x86-64.so.2 /usr_old/bin/mv /usr_old /usr

U&L'ye hoş geldiniz, yazdığınız tek komut bu muydu? Lütfen daha ayrıntılı bir prosedür sağlayın. (özellikle on aylık bir soru için acele etmeye gerek yok)
Archemar

1
Evet, bu komutu yazdıktan sonra her şey geri yüklendi. Belki de bütün bunlar sırasında kök olduğumu belirtmeliyim.
Mansehr

1

ÖNEMLİ Eğer buradaysanız ve mvyanlış çalıştırdıysanız shell, kök dizinden ( /) eksik komutları ve klasörleri çalıştıramazsanız , her şeyden önce, varsa SU, SUdüzeltilinceye kadar ÇIKMAYIN çünkü geri alamayacaksınız. Uzaktan bağlanırsanız, bağlantıyı keserseniz, sshsunucuyu yalnız bırakamazsınız, çalışmaz reboot- çoğu çalışan hizmetin iyi olması gerekir. Patrick tarafından önerilen birçok çözümden birini deneyebilirsiniz ... ancak benim gibi batırdıysanız muhtemelen fiziksel erişime ihtiyacınız olacak.

Makinenin önünde bir kez yeniden başlattım. Beklendiği gibi, bir çekirdek paniği aldım.

Bu oldukça kolay bir düzeltme olacağını düşündüm, livecd takın, kurtarma moduna girin BU NOKTA KOLAY OLDU - sonra kök dizinimi denemek zorunda kaldım. Ancak basit bir mount komutundan daha fazlasına ihtiyacım vardı.

Bunun nedeni, birçok insan gibi, bir lvm dosya sistemine sahip olmamdı ve ilk kez böyle bir kurtarma ile uğraşmak zorunda kaldım. Ne yapmam gerektiğini görmek için internette arama yapmak zorunda kaldım. Bu bilgiyi bu yazıya birleştirdim. İşte sorunumu çözme sürecim.

1) Centos_6.4_min cd'si eklendi

2) GUI arayüzü ne yapmak istediğimi sordu, Kurtarma'yı seçti

3) Kurtarma mevcut sistemi kurmaya çalıştı, ancak Linux bölümüm olmadığını belirtti

4) shellSeçenek verildiğinde girmeyi seçti

Bu noktada, sistemi monte etmek için birçok şeyi denedim, şanssızım, bunların (lvm nedeniyle) atmam gereken tüm adımlar olduğundan eminim:

5) Ciltlerimi taradım,

lvmdiskscan

6) lvscan koştu, tüm "etkin değil" olarak listelenen gösterdi

lvscan

7) yük cihazı modülü

modprobe dm-mod

8) Mevcut hacimleri aktif olarak değiştirin

vgchange -ay

9) lvscanTekrar koştu , şimdi "aktif" olarak listelenen tüm öğeler

10) Mountpoint oluşturdu ve mantıksal bölümü monte etti

mkdir /mnt/root

mount /dev/VolGroup00/LogVol00 /mnt/root

11) Klasörler geri taşındı (başkalarına ihtiyacınız olabilir):

mv /var/{bin,etc,lib64,mnt,root,sbin} /

12)reboot

13) BAŞARI!

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.