Dan sekarang saya tidak dapat chmod kembali .. atau menggunakan salah satu program sistem saya yang lain. Untungnya ini ada di VM yang saya mainkan, tetapi apakah ada cara untuk menyelesaikan ini? Sistemnya adalah Ubuntu Server 12.10.
Saya telah mencoba untuk memulai kembali ke mode pemulihan, sayangnya sekarang saya tidak dapat boot ke sistem sama sekali karena izin tidak memberikan beberapa program setelah ketersediaan init-bottom untuk menjalankan - sistem hanya hang. Inilah yang saya lihat:
Begin: Running /scripts/init-bottom ... done
[ 37.062059] init: Failed to spawn friendly-recovery pre-start process: unable to execute: Permission denied
[ 37.084744] init: Failed to spawn friendly-recovery post-stop process: unable to execute: Permission denied
[ 37.101333] init: plymouth main process (220) killed by ABRT signal
Setelah ini komputer hang.
/bin
Anda chmoded atau file dalam/bin
atau keduanya?Jawaban:
Boot OS bersih lain, pasang sistem file dan perbaiki izin.
Karena sistem file yang rusak Anda tinggal di VM, Anda harus memiliki sistem host Anda tersedia dan berfungsi. Pasang sistem file Anda yang rusak di sana dan perbaiki.
Dalam kasus QEMU / KVM Anda dapat misalnya memasang sistem file menggunakan nbd .
sumber
/boot
partisi VM itu. Coba dan temukan sistem file root. Jika pada LVM, jalankanvgchange -ay
setelah menghubungkannbd
untuk mengaktifkannya.Bahkan
root
, Anda tidak dapat menjalankan file yang tidak memilikix
bit izin yang ditetapkan. Apa yang dapat Anda lakukan adalah memanggilnyald.so
(asalkan mereka executable yang terhubung secara dinamis):Gunakan salah satu yang cocok dengan arsitektur yang
chmod
dapat dieksekusi. Dalam kasus saya yangx86_64
satu:Atau hubungi sesuatu di
/usr/bin
atau di tempat lain untuk melakukan hal yangchmod
samaperl
:Hati-hati saat mengembalikan izin yang
/bin
disukai beberapa filemount
atausu
dimaksudkan untuk memiliki izin selain 0755.Jika Anda sudah reboot, namun, Anda mungkin tidak bisa mendapatkan ke titik di mana Anda dapat menjalankan
perl
atauld.so
sekalipun. Anda dapat memperbaiki hal-hal dariinitramfs
though (lewat direktori root yang salah untuk mendapatkan shell pemulihan di initramfs; lihat juga parameterbreak=bottom
ataubreak=init
kernel pada Debian, untuk initramfs memberi Anda shell setelah sistem file root dipasang (read-only) meskipun)). Atau boot VM Anda dari gambar live CD, atau perbaiki dengan memasang sistem file VM pada host seperti yang disarankan orang lain.Memperbaiki cara initramfs:
Di
grub
, edit entri boot dan hapusroot=
parameter darilinux
perintah:Ctrl-Xuntuk boot. Initramfs Ubuntu tidak akan menemukan sistem file root, jadi mulailah pemulihan
sh
. Kemudian pasang sistem file root (dalam kasus saya/dev/vdb
, beradaptasi dengan mesin Anda) dan perbaiki hal-hal di sana:Setelah di-boot, perbaiki izin file yang tidak dimaksudkan untuk memiliki 755 izin dengan membandingkannya dengan sistem lain.
Memperbaiki dengan menjalankan
python
sebagaiinit
:Dalam
grub
, mengedit entri boot, kali ini menjagaroot=
parameter, perubahanro
kerw
dan menambahkaninit=/usr/bin/python
:Kemudian, pada prompt python:
Sekali lagi, setelah boot, perbaiki izin file yang tidak dimaksudkan untuk memiliki 755 izin dengan membandingkan dengan sistem lain.
sumber
already try to reboot
kasus ini: boot pada CD langsung, mount rw partisi yang berisi / bin, danchmod 755 /bin
(dan file di dalamnya jika mereka diubah juga). Tetapi setelah itu, periksa apakah semua file adalah izin yang benar (tergantung pada distrib linux Anda, Anda mungkin dapat memeriksa / bin terhadap paket asli)ld.so
, mungkin di beberapa direktori seperti/lib/x86_64-linux-gnu
.os.execl
danexec
untuk mengeksekusi, mereka tidak melakukan proses, hanya mengganti executable dalam proses yang sama , jadi semua dilakukan dalam pid 1. Proses 1 awalnya berjalanpython
, lalush
, laluinit
.Gunakan python :)
Seharusnya tidak perlu apa pun
/bin
untuk melakukan tugasnya. Jelas, saya belum mencoba ini ...sumber
chmod
adalah panggilan sistem, dipanggil olehchmod
program dan juga olehchmod
fungsi dalam python / perl / ruby dll. Kerang memanggilchmod
utilitas sekalipun.chmod
builtin. Itulah situasi di mana cangkang sepertisash
berguna. Ini terhubung secara statis dan memiliki sebagian besar perintah pemulihan sepertichmod
builtin (jadi tidak bergantung pada yang lain). Biasanya akan duduk/sbin
meskipun tidak ada salahnya memiliki salinan tambahan pada semua sistem file, dan dapat digunakan dalam kombinasi dengan memlockd.zsh
danksh93
memiliki chmod builtin (meskipun tidak diaktifkan secara default).Anda dapat mencoba
sudo chmod -R 744 /path-to-your-system/bin
dari distro langsung.sumber