Это можно вернуться из такой ситуации грязной , без переустановки системы. Что ж, точнее, запуск новой новой системы либо с USB-ключа, либо из Virutal Box (или около того), если у вас есть система с двойной загрузкой.
Я снова запустил такой же вопрос (какая-то ошибка в сценарии, который я писал) и решил ее, но вам нужно обратиться за помощью к эксперту. Будьте очень осторожны!
Во-первых, мою ситуацию было легче разрешить, потому что у меня была система с двойной загрузкой (Ubuntu и моя старая установка Fedora), но запуск системы для USB-ключа (или, возможно, CD / DVD) должен был сделать то же самое.
MPOINT = / монтирование / убунту
Сначала я смонтировал свои файловые системы следующим образом (не забудьте создать точки монтирования): mount / dev / ubuntu / root $ MPOINT mount / dev / ubuntu / home $ MPOINT / home
Затем я выполнил следующую команду (моя проблема была только в нескольких - критических - каталогах), чтобы скопировать разрешения из запущенной системы в грязную (фактически, в моем случае я установил систему Ubuntu в Virtual Box под Fedora и получил там разрешения)
найти / etc / usr / bin -exec stat --format "chmod% a $ {MPOINT}% n" {} \; > /tmp/restoreperms.sh
И тогда я запустил скрипт restoreperms.sh.
Я снова смог загрузиться на Ubuntu.
Содержимое restoreperms.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
(...)
Я не тестировал его, но он должен работать и для владельцев, и для групп владельцев. Что-то вроде:
найти / 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. Теперь у меня есть эти команды в cronjob, которые выполняются каждый день (могут быть недели), чтобы сохранить эту информацию. В следующий раз это облегчит решение, но, разумеется, поскольку у меня есть это сейчас, это никогда не повторится. ;-) Что-то вроде этого:
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
РЕДАКТИРОВАТЬ: для поддержки ссылок, объединенная команда:
/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {}