Це можна повернутися з такої ситуації брудної , без переустановлення системи. Ну, точніше запустити нову нову систему або з USB-ключа, або в Virutal Box (або близько того), якщо у вас є подвійна система завантаження.
Я знову побіг того ж виду з питання (якась помилка в сценарії, про який я писав) і вирішив це, але вам потрібно звернутися за допомогою до експерта. Будьте дуже завзяті!
По-перше, мою ситуацію було легше вирішити, тому що у мене була подвійна система завантаження (ubuntu та старий встановлений Fedora), але запуск системи для USB-ключа (або, можливо, CD / DVD) повинен робити те саме.
MPOINT = / mount / ubuntu
Спочатку я монтував такі файлові системи (не забудьте створити точки монтажу): mount / dev / ubuntu / root $ MPOINT mount / dev / ubuntu / home $ MPOINT / home
Потім я запустив таку команду (моя проблема була лише в декількох - критичних - каталогів), щоб скопіювати дозволи на працюючу систему в безладний (адже в моєму випадку я встановив систему ubuntu у Virtual Box під Fedora і отримали дозволи там):
find / etc / usr / bin -exec stat --format "chmod% a $ {MPOINT}% n" {} \; > /tmp/restoreperms.sh
А потім я запустив скрипт Restoperms.sh.
Я знову зміг завантажитися на ubuntu.
Вміст Restoperms.sh буде приблизно таким:
(...)
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
(...)
Я не перевіряв його, але він також повинен працювати для власників та груп власників. Щось на зразок:
find / 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
(...)
Звичайно, ви повинні подбати про те, щоб UID та GID були однаковими для обох систем, але для користувачів та груп, пов’язаних із системою, це не повинно бути проблемою.
Rk:
Важливим для цього є збереження встановленого диска синхронізованим із використовуваною версією або принаймні робота з поточною версією ubuntu. Тепер я маю ці команди на кроні, що працює щодня (може бути тижнями), щоб зберегти цю інформацію. Це полегшить рішення наступного разу, але, звичайно, як це я маю зараз, воно більше ніколи не повториться. ;-) Щось на зразок цього:
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
EDIT: для підтримки посилань комбінована команда:
/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {}