Z takiej nieuporządkowanej sytuacji można wrócić bez ponownej instalacji systemu. Dokładniej, uruchamiając nowy system z klucza USB lub w Virutal Box (lub tak), jeśli masz system podwójnego rozruchu.
Uruchomiłem ponownie ten sam rodzaj problemu (jakiś błąd w pisanym przeze mnie skrypcie) i rozwiązałem go, ale musisz poprosić o pomoc eksperta. Bądź bardzo ostrożny!
Po pierwsze, moja sytuacja była łatwiejsza do rozwiązania, ponieważ miałem system podwójnego rozruchu (ubuntu i moją starą instalację Fedory), ale uruchomienie systemu dla klucza USB (lub może CD / DVD) powinno zrobić to samo.
MPOINT = / mount / ubuntu
Najpierw zamontowałem swoje systemy plików w ten sposób (nie zapomnij utworzyć punktów montowania): mount / dev / ubuntu / root $ MPOINT mount / dev / ubuntu / home $ MPOINT / home
Następnie uruchomiłem następujące polecenie (mój problem był tylko w kilku - krytycznych - katalogach), aby skopiować uprawnienia z działającego systemu do bałaganu (w rzeczywistości, w moim przypadku, zainstalowałem system ubuntu w Virtual Box pod Fedorą i mam tam uprawnienia):
znajdź / etc / usr / bin -exec stat --format "chmod% a $ {MPOINT}% n" {} \; > /tmp/restoreperms.sh
A potem uruchomiłem skrypt restoreperms.sh.
Byłem w stanie ponownie uruchomić na Ubuntu.
Zawartość pliku restoreperms.sh będzie wyglądać następująco:
(...)
chmod 755 /mount/ubuntu//etc/ppp
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up
chmod 2750 /mount/ubuntu//etc/ppp/peers
chmod 640 /mount/ubuntu//etc/ppp/peers/provider
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up.d
chmod 777 /mount/ubuntu//etc/ppp/resolv.conf
(...)
Nie przetestowałem tego, ale musi działać również dla właścicieli i grup właścicieli. Coś jak:
znajdź / etc / usr / bin -exec stat --format 'chown% U:% G $ {MPOINT}% n' {} \; > /tmp/restoreperms.sh^
(...)
chown root:root /mount/ubuntu//etc/obex-data-server/imaging_capabilities.xml
chown root:root /mount/ubuntu//etc/obex-data-server/capability.xml
chown root:dip /mount/ubuntu//etc/ppp
chown root:root /mount/ubuntu//etc/ppp/ipv6-up
chown root:dip /mount/ubuntu//etc/ppp/peers
chown root:dip /mount/ubuntu//etc/ppp/peers/provider
chown root:root /mount/ubuntu//etc/ppp/ipv6-up.d
chown root:root /mount/ubuntu//etc/ppp/resolv.conf
(...)
Oczywiście musisz tutaj uważać, aby UID i GID były takie same w obu systemach, ale dla użytkowników i grup związanych z systemem nie powinno to stanowić problemu.
Rk:
Ważną rzeczą jest synchronizacja dysku instalacyjnego z używaną wersją lub przynajmniej praca z bieżącą wersją Ubuntu. Teraz mam te polecenia w koledze, uruchamiane codziennie (może być tygodnie), aby zachować te informacje. Ułatwi to rozwiązanie następnym razem, ale oczywiście, skoro mam to teraz, nigdy więcej się nie powtórzy. ;-) Coś takiego:
0 12 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chmod %a %n" {} \; |/bin/bzip2 -c > /tmp/restore_chmod.$(/bin/date +%w).sh.bz2
0 13 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chown %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_chown.$(/bin/date +%w).sh.bz2
EDYCJA: aby obsługiwać łącza, połączone polecenie to:
/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {}