OS adalah Centos 6.5 64-bit
Saya mengunduh file tar dan ingin menguraikannya mv
.
Saya tidak peduli, kemudian secara tidak sengaja (sebagai root) berlari mv folder/* /*
bukannya mv folder/* .
bash mengatakan itu tidak bisa menimpa beberapa file, kemudian meminta izin untuk yang lain. Saya ctrl-c'd keluar.
Saya membiarkan sesi terminal terbuka, tetapi sudah keluar su
.
Sekarang saya kehilangan akses ke sebagian besar shell
perintah, tidak bisa ls
direktori dan tidak bisa kembali ke su
.
Server web dan layanan tampaknya masih berjalan. Saya bisa menjalankan sedikit perintah, cd
adalah salah satu dari mereka dan ketika saya mencoba untuk cd
ke /etc
atau /bin
itu kesalahan dengan no directory found
.
EDIT Hanya melihat semua folder yang hilang dari /
( bin
, etc
, lib64
, root
, sbin
) punya pindah ke /var
direktori, saya mencoba /var/bin/su
& mendapatkan:
-bash: /var/bin/su: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
/var/bin/su
langsung?/var/bin/su: user root does not exist
Saya pikir kami bertekad tidak bisa dilakukan karena / etc at / var / etcJawaban:
Jika sistem Anda telah
busybox
diinstal, Anda dapat menggunakan ini untuk mengembalikan semuanya.busybox
adalah biner dengan banyak utilitas standar yang dibangun di dalamnya. Hal-hal sepertimv
,sh
,ls
, dllDari komentar Anda pada jawaban Pavel, sepertinya semuanya berakhir
/var
. Anda dapat mencoba melakukannya/var/bin/busybox mv /var/{bin,etc,lib32,lib64,root,sbin,usr} /
. Itu akan membuat sebagian besar sistem Anda beroperasi kembali. Ada beberapa direktori seperti/tmp
yang juga ada/var/tmp
, jadi Anda tidak bisa hanya memindahkannya. Semoga mereka yangmv
mengeluh dan mereka ditinggal sendirian.Mendapatkan shell root
Anda juga menyebutkan bahwa Anda kehilangan shell root Anda, dan itu
su
memberi Andald-linux
kesalahan perpustakaan. Anda mungkin dapat menggunakan yang berikut ini:Catatan: Setelah mencoba ini, itu tidak berhasil. Hal ini karena
su
memerlukan beberapa file dalam/etc
(passwd
,pam.d
, dan lain-lain). Jika/etc
masih utuh, ini akan memiliki peluang bagus untuk berhasil.Tanpa busybox
Jika Anda tidak memiliki busybox, Anda mungkin dapat menggunakan trik ld-linux yang sama dengan
su
:Dari CD live
Seperti dibahas dalam komentar, jika Anda kehilangan shell root, Anda cukup banyak terjebak. Pada dasarnya untuk memperbaikinya Anda perlu hak root. Satu-satunya cara untuk sampai ke sana adalah memiliki utilitas seperti
su
atausudo
meningkatkan izin Anda (keduanya tidak berfungsi pada saat ini), atau membajak program lain yang sudah berjalan sebagai root (tergantung pada apa yang berjalan, kemungkinan tidak mungkin).Ini meninggalkan satu-satunya pilihan menjadi live CD. Setelah boot ke live CD (atau live USB, atau apa pun), cukup pasang volume root, dan pindahkan direktori yang terpengaruh keluar dari
/var
belakang ke rumah aslinya di/
.Sinopsis tentang apa yang terjadi
folder/*
akan diperluas ke sesuatu sepertifolder/foo
danfolder/bar
./*
akan diperluas ke sesuatu seperti/bin
/lib32
/lib64
/etc
/home
/root
/var
. Memperhatikan itu/var
adalah item terakhir.Jadi ketika shell memperluas semua gumpalan itu, itu akan menjalankan sesuatu seperti ini:
Seperti
/var
item terakhir dalam daftar, semuanya dipindahkan ke dalamnya.Kenapa salah
/var/bin/su
dengan/lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
Hampir semua binari di linux terhubung secara dinamis
ld-linux
.ld-linux
adalah perpustakaan yang bertanggung jawab untuk memuat perpustakaan lain yang dibutuhkan oleh biner. Di sistem Anda ini hidup di/lib64/ld-linux-x86-64.so.2
. Sejak direktori ini dipindahkan, semua executable yang terhubung secara dinamis tidak akan berfungsi lagi.Alasan busybox berfungsi adalah karena busybox terhubung secara statis. Itu tidak digunakan
ld-linux
.sumber
busybox
kedengarannya seperti solusi sempurna, sayangnya tidak diinstal, akankah setelah ini diperbaiki ... sementara itu, apakah ada pula untuk memperbaiki jalur untuk perintah untuk mengeksekusi/var/lib64/ld-linux-x86-64.so.2
bukan/lib64/ld-linux-x86-64.so.2
? Tampaknya inilah yang mematikan perintah di/var/bin
/etc
mana tidak ada (/etc/passwd
,/etc/nsswitch
,/etc/pam.d
, dan mungkin lebih). Agarsu
dapat bekerja,/etc
harus kembali ke lokasi asalnya. Kecuali Anda punya shell root yang bertebaran, saya pikir Anda terjebak :-(mv folder/* ./*
salah juga. Anda harus lebih berhati-hati tentang semantik dari perintah yang Anda jalankan. Themv
perintah dengan lebih dari dua argumen hanya mengambil semua argumen kecuali yang terakhir dan bergerak jalan mereka ke titik ke direktori yang ditentukan dalam argumen terakhir.Untuk memindahkan semua direktori (kecuali yang tersembunyi) dari folder ke direktori saat ini, Anda harus menggunakan:
Anda telah merusak sistem Anda yang sedang berjalan. Perintah shell dan builtin Anda terus bekerja. Anda harus mem-boot CD langsung dan memindahkan direktori kembali. Saya tidak mengetahui adanya bash bawaan untuk memindahkan / mengganti nama file yang akan memungkinkan Anda untuk memperbaiki situasi tanpa me-reboot, lihat jawaban Patrick untuk lebih jelasnya.
sumber
mv
perintah saya untuk memindahkan semua file dan folder dari folder ke direktori saat ini?/
dan/var
mungkin berada di partisi yang berbeda, dalam hal ini Anda harus me-mount keduanya.Saya tidak sengaja pindah / usr ke / usr_old dan semuanya pergi ke neraka. Untungnya saya tetap berada di prompt dan dapat menjalankan perintah berikut untuk mengembalikan folder usr:
sumber
PENTING Jika Anda berada di sini, dan telah menjalankan
mv
salah, tidak dapat menjalankanshell
perintah, dan folder hilang dari direktori root (/
), pertama-tama, jika Anda milikiSU
, JANGAN keluarSU
sampai diperbaiki, karena Anda tidak akan mendapatkannya kembali. Jika Anda terhubung dari jarak jauh, jika Anda memutuskan, Anda tidak akan bisassh
, biarkan server sendiri, janganreboot
- sebagian besar layanan yang berjalan harus OK. Anda dapat mencoba salah satu dari banyak solusi yang disarankan oleh Patrick ... namun Anda kemungkinan akan memerlukan akses fisik jika Anda mengacau seperti saya.Begitu di depan mesin, saya reboot. Seperti yang diharapkan, saya memang menerima panik kernel.
Saya pikir ini akan menjadi perbaikan yang cukup mudah, masukkan livecd, masuk ke mode penyelamatan HINGGA POIN INI MUDAH - maka saya harus mencoba dan memasang direktori root saya. Namun saya membutuhkan lebih dari sekedar perintah mount sederhana.
Ini karena saya, seperti banyak orang, memiliki sistem file lvm, dan ini adalah pertama kalinya saya harus berurusan dengan penyelamatan seperti ini. Saya harus mencari di web untuk melihat apa yang perlu saya lakukan. Saya telah menggabungkan informasi itu ke posting ini. Inilah proses saya untuk memperbaiki masalah saya.
1) Dimasukkan cd Centos_6.4_min
2) antarmuka GUI bertanya apa yang ingin saya lakukan, pilih Rescue
3) Penyelamatan mencoba me-mount sistem saat ini, tetapi menunjukkan saya tidak punya partisi Linux
4) Memilih untuk masuk
shell
ketika opsi diberikanPada titik ini saya mencoba banyak hal untuk memasang sistem, tanpa hasil, saya cukup yakin ini semua langkah yang harus saya ambil (karena lvm):
5) Memindai volume saya,
lvmdiskscan
6) Ran lvscan, menunjukkan semua yang terdaftar sebagai "tidak aktif"
lvscan
7) memuat modul perangkat
modprobe dm-mod
8) ubah volume yang ada menjadi aktif
vgchange -ay
9) Berlari
lvscan
lagi, sekarang semua item terdaftar sebagai "aktif"10) Membuat mountpoint & me-mount partisi logical
mkdir /mnt/root
mount /dev/VolGroup00/LogVol00 /mnt/root
11) Folder yang dipindahkan kembali (ANDA mungkin membutuhkan yang lain):
mv /var/{bin,etc,lib64,mnt,root,sbin} /
12)
reboot
13) SUKSES!
sumber