A teraz nie jestem w stanie przeskoczyć z powrotem .. ani użyć żadnego z moich innych programów systemowych. Na szczęście jest to na maszynie wirtualnej, z którą bawiłem się, ale czy jest jakiś sposób na rozwiązanie tego? System to Ubuntu Server 12.10.
Próbowałem zrestartować się w trybie odzyskiwania, niestety teraz nie jestem w stanie uruchomić się w systemie z powodu uprawnień, które nie przyznają niektórym programom dostępności od początku do początku - system po prostu się zawiesza. Oto co widzę:
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
Następnie komputer się zawiesza.
/bin
chmoded czy pliki w,/bin
czy oba?Odpowiedzi:
Uruchom inny czysty system operacyjny, zamontuj system plików i napraw uprawnienia.
Ponieważ uszkodzony system plików mieszka na maszynie wirtualnej, system hosta powinien być dostępny i działać. Zamontuj tam uszkodzony system plików i napraw go.
W przypadku QEMU / KVM możesz na przykład zamontować system plików za pomocą nbd .
źródło
/boot
partycję tej maszyny wirtualnej. Spróbuj zlokalizować główny system plików. Jeśli na LVM, uruchomvgchange -ay
po podłączeniu,nbd
aby go aktywować.Mimo
root
to nie można wykonywać plików, które nie mająx
ustawionego bitu uprawnień. Możesz jednak wywołaćld.so
go (pod warunkiem, że są to pliki wykonywalne połączone dynamicznie):Użyj tej, która pasuje do architektury
chmod
pliku wykonywalnego. W moim przypadku tenx86_64
:Lub zadzwoń coś
/usr/bin
lub gdzie indziej, aby wykonaćchmod
jakperl
:Uważaj podczas przywracania uprawnień, które niektóre pliki
/bin
lubiąmount
lubsu
mają mieć uprawnienia inne niż 0755.Jeśli po ponownym uruchomieniu komputera, jednak może nie być w stanie dostać się do punktu, w którym można uruchomić
perl
albold.so
chociaż. Możesz to naprawić z tego powoduinitramfs
(przekaż niepoprawny katalog główny, aby uzyskać powłokę odzyskiwania w initramfs; zobacz także parametrbreak=bottom
lubbreak=init
jądro Debiana, aby initramfs dał ci powłokę po zamontowaniu głównego systemu plików (tylko do odczytu) chociaż)). Lub uruchom maszynę wirtualną z obrazu CD na żywo lub napraw, instalując system plików VM na hoście, jak sugerowali inni.Naprawianie sposobu initramfs:
W
grub
dokonaj edycji wpisu rozruchu i usuńroot=
parametr zlinux
polecenia:Ctrl-Xuruchomić. Initramfs Ubuntu nie znajdzie głównego systemu plików, więc rozpocznij odzyskiwanie
sh
. Następnie zamontuj główny system plików (w moim przypadku/dev/vdb
dostosuj się do swojego komputera) i napraw tam rzeczy:Po uruchomieniu popraw uprawnienia do plików, które nie mają mieć uprawnień 755, porównując z innym systemem.
Naprawianie przez uruchomienie
python
jakoinit
:W
grub
edytujemy wpisu rozruchu, tym razem zachowaćroot=
parametr, zmianyro
dorw
i dodajinit=/usr/bin/python
:Następnie w pytaniu python:
Ponownie, po uruchomieniu, napraw uprawnienia do plików, które nie mają mieć uprawnień 755, porównując z innym systemem.
źródło
already try to reboot
przypadku: uruchom na żywo CD, zamontuj rw partycję zawierającą / bin orazchmod 755 /bin
(i pliki wewnątrz, jeśli również zostały zmienione). Ale potem sprawdź, czy wszystkie pliki mają odpowiednie uprawnienia (w zależności od dystrybucji Linuksa, prawdopodobnie możesz sprawdzić / bin w stosunku do oryginalnego pakietu)ld.so
, może w jakimś katalogu/lib/x86_64-linux-gnu
.os.execl
iexec
są do wykonania, ale nie wybulić proces, wystarczy zastąpić plik wykonywalny w tym samym procesie , więc wszystko odbywa się w pid 1. 1 Proces początkowo biegniepython
, potemsh
, poteminit
.Użyj Pythona :)
To nie powinno wymagać niczego,
/bin
aby wykonać swoją pracę. Oczywiście nie wypróbowałem tego ...źródło
chmod
to wywołanie systemowe wywoływane przezchmod
program, a także przezchmod
funkcję w python / perl / ruby itp. Powłoki wywołują jednakchmod
narzędzie.chmod
wbudowane. W takiej sytuacjisash
przydatne są takie pociski . Jest statycznie powiązany i ma większość poleceń odzyskiwania , takich jakchmod
wbudowane (więc nie polega na niczym innym). Zwykle siedziałby w/sbin
nim, chociaż nie zaszkodziłoby posiadanie dodatkowych kopii na wszystkich systemach plików, i może być używany w połączeniu z memlockd.zsh
iksh93
mają wbudowany chmod (choć domyślnie nie jest włączony).Możesz spróbować
sudo chmod -R 744 /path-to-your-system/bin
z dystrybucji na żywo.źródło